我有一个库,我使用命令安装它用于开发目的
$ 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')
我可以很好地导入包。
所以,我想我的问题是,为什么会发生这种情况?
任何想法将不胜感激。
正如@Wayne在jupyter的评论中所说,你可以使用
%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
中看到的那样,我们也有它。
相关解答