如何将 python 模块从源代码安装到虚拟环境中
Posted
技术标签:
【中文标题】如何将 python 模块从源代码安装到虚拟环境中【英文标题】:How to install python modules from sources onto a virtual environment 【发布时间】:2018-11-01 19:01:23 【问题描述】:据我了解,您使用 pip install -e /my_module 从源安装模块
当我这样做时 pip show -f my_module | grep 位置 将 ~/my_module 作为位置而不是我的虚拟环境的站点包
我在安装模块时激活了我的虚拟环境。我还尝试将我的模块文件夹移动到我的虚拟环境的站点包中,但它将它安装在站点包/my_module 中,而不仅仅是站点包。
我这样做是为了编辑现有模块以处理我的数据形状。
从源代码安装模块到虚拟环境的正确方法是什么?
【问题讨论】:
【参考方案1】:据我了解,您使用 pip install -e /my_module 从源安装模块
不,不完全是。 pip install -e
以“可编辑”安装,即开发模式。而不是将安装的文件复制到site-packages/
目录pip
配置site-packages/
和您的源,以便python 从您的源目录导入您的模块。这样您就可以编辑模块,并且更改立即可供 python 使用。如果没有-e
,pip 会以通常的方式安装包——将它复制到site-packages/
,所以如果你编辑你的代码,你需要重新安装。
当我这样做时 pip show -f my_module | grep Location 将 ~/my_module 作为位置,而不是我的虚拟环境的站点包
是的,pip install -e
就是这样工作的。如果您希望将代码复制到虚拟环境的site-packages/
,请不要使用-e
。
我这样做是为了编辑现有模块以处理我的数据形状。
那么你当然需要-e
以便你的模块可以从源目录中导入。
从源代码安装模块到虚拟环境的正确方法是什么?
pip install
和 pip install -e
都是正确的,它们适用于不同的用例。
【讨论】:
感谢您的回复!删除 -e 确实使它安装在正确的位置。现在如果我做 pip show -f my_module | grep Location 与我的模块或现有的工作模块,它们都给出相同的位置。问题是当我运行我的 python 文件时我的模块仍然没有被导入!我认为问题在于它没有安装在正确的位置,但它一定是不同的东西。关于为什么模块没有被导入的任何想法? 每次编辑源时别忘了重新安装。 抱歉,我在询问后续问题之前不小心发表了评论:问题是当我运行我的 python 文件时,我的模块仍然没有被导入!我认为问题在于它没有安装在正确的位置,但它一定是不同的东西。关于为什么模块没有被导入的任何想法? 你最好问一个更详细的问题——包安装在哪里,有什么文件,错误是什么,which pip
,which python
,pip --version
,python --version
的结果.
好的,我发现了一个问题,但没有找到解决方案。出于某种原因 virtualenv --system-site-packages ~/venv 安装 python 2.6 而不是 3.6。我解决了这个问题,现在一切都在 python 3 中,但它仍然无法找到我的模块。我已经激活了 venv,当我使用 ~/venv/bin/pip freeze --local 时,我的模块出现了。 which python 和 which pip 都指向 ~/venv/bin 我的错误是 ModuleNotFoundError: No module named 'my_module.class_file'; 'my_module' 不是一个包。我正在从下载文件夹运行我的 python 代码。在提出新问题之前,我会先调查一下【参考方案2】:
假设你的库中有一个 setup.py 设置文件
第 1 步:激活您的虚拟环境。
第 2 步:导航到您的库源文件夹。
第 3 步:通常使用“python setup.py install”安装库。
【讨论】:
以上是关于如何将 python 模块从源代码安装到虚拟环境中的主要内容,如果未能解决你的问题,请参考以下文章