在虚拟环境中安装我的自定义Python模块。
在虚拟环境中安装我的自定义Python模块。
我现在拥有:\n
- \n
- 本地的Python3文件,我想将其转化为一个模块
test_module
test_module
文件夹,包含一个空的__init__.py
文件,一个setup.py
文件(见下文),以及包含多个源文件的子目录
\n
\n
\n我想要实现的目标:\n
- \n
- 在本地持续工作和改进
test_module
- 以简单的方式在我的虚拟环境中(使用
python3 -m venv my_environment
创建)安装test_module
及其所有依赖项 - 通过
python myexample.py
运行使用该模块的文件,而无需每次进入或退出my_environment
时调整本地的PYTHONPATH变量 - 通过git与他人共享我的Python代码,并允许他们使用相同的过程在本地安装他们的代码(尽可能简单)
- 学习创建自己模块的最佳实践
\n
\n
\n
\n
\n
\n我目前的做法:\n
- \n
- 使用
pip freeze > requirements.txt
和pip install -r requirements.txt
安装依赖项 - 在
my_environment/bin/activate
中添加export PYTHONPATH=\"${PYTHONPATH}:.\"
,以将自己的模块添加到搜索路径中\n(参见:How do you set your pythonpath in an already-created virtualenv?)
\n
\n
\n我想知道是否有基于setup.py
的更\"干净\"的解决方案,可能涉及类似于pip install ./test_module
的方式,自动处理步骤2和3。\n我当前的setup.py
文件如下所示:\n
from setuptools import setup setup( name='test_module', version='0.1', description='Some really good stuff, that I am still working on', author='Bud Spencer', author_email='bud.spencer@stackoverflow.com', packages=['test_module'], # same as name install_requires=['numpy', 'scipy', 'sklearn', 'argparse'], # external packages as dependencies )
问题:在虚拟环境中安装自己的Python模块的出现原因以及解决方法。
原因:想要在虚拟环境中运行pip install -e <path/url>
命令,该命令将会从本地路径或Git仓库中安装一个带有setup.py
文件的包。如果想要了解后者的语法,请参考https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support。
解决方法:以下是一个示例:
pip install -e git+https://github.com/me/test_module/#egg=test-module
如果已经安装了该模块并想要拉取最新的代码,则在上述命令中添加--upgrade
选项。