Pip 添加适用于 python 但不适用于 jupyter 的路径条目

问题描述 投票:0回答:1

我有一个库,我使用命令安装它用于开发目的

$ pip install -e .

库结构是这样的:

.
└── package-name/
    ├── package_name/
    │   ├── __init__.py
    │   ├── module1.py
    │   └── module2.py
    ├── setup.py
    ├── requirements.txt
    └── README.md

pip 命令安装包并将此条目附加到路径中:

$ python -c "import sys; print(sys.path)"

[..., '/home/user_name/package-name/package_name']

当我在环境的 python 中导入包时。我可以很好地导入它。当我尝试在 jupyter 中导入它时,我收到“ModuleNotFoundError:没有名为“package_name”的模块”

当我从 jupyter 内核重新安装库时。同样的结果。

但是当我跑步时:

import sys
sys.path.append('/home/user_name/package-name')

我可以很好地导入包。

所以,我想我的问题是,为什么会发生这种情况?

  • 为什么Python可以找到该路径下的包,而Jupyter却找不到?
  • 我可以告诉 Pip 在路径中添加不同的条目吗?
  • 如何确保我的用户在安装这个早期库时不会遇到这个问题?
  • 更改顶级目录的名称以匹配 src 目录名称会产生影响吗?

任何想法将不胜感激。

python jupyter-notebook pip
1个回答
0
投票

正如@Waynejupyter的评论中所说,你可以使用

%pip install -e .

而不是

pip install


在 Debian 上安装 jupyter lab 的说明。

创建python虚拟环境并激活它。

python3 -m venv env 
source env/bin/activate

您可能需要安装

python3-venv
软件包。所以跑吧

$ sudo apt install python3-venv

毕竟我们有一个现成的工作环境。

现在我们可以在这个环境中安装我们的特殊模块了。

我们在 venv 虚拟环境中安装新的 python 包,即 package-name

python3 -m pip install -e .
或类似命令
pip install -e .

$ python3 -m pip install -e .

在其中安装jupyter lab。

python3 -m pip install jupyterlab

pip freeze

检查一下

并与

一起运行
jupyter lab --ip 0.0.0.0

现在 Jupyter Web 界面将在端口 8888 上的 IP 地址上触发。

所以底层环境venv目前有package-nam模块,正如我们在jupyter实验室的

pip freeze
中看到的那样,我们也有它。

Run %pip install package-name

相关解答

© www.soinside.com 2019 - 2024. All rights reserved.