【发布时间】:2018-09-27 23:35:32
【问题描述】:
我有什么:
我想转成模块的本地Python3文件
test_moduletest_module文件夹包含一个空的__init__.py、一个setup.py文件(见下文)和具有多个源的子目录 文件
我想要什么:
在本地持续改进和改进
test_module有一种简单的方法可以在我自己的虚拟环境中本地安装
test_module及其所有依赖项(使用python3 -m venv my_environment创建)通过
python myexample.py运行使用模块的文件,而无需在每次进入或退出my_environment时调整我的本地 PYTHONPATH 变量通过 git 与其他人共享我的 python 代码,并允许他们使用相同的过程(尽可能简单)在本地机器上安装他们的代码
了解如何创建自己的模块的最佳实践
我现在是怎么做的:
pip freeze > requirements.txt和pip install -r requirements.txt用于安装依赖项添加
export PYTHONPATH="${PYTHONPATH}:."到my_environment/bin/activate,在搜索路径中有我自己的模块 (如在此处找到:How do you set your pythonpath in an already-created virtualenv?)
我想知道是否有基于setup.py 的“更清洁”解决方案,可能涉及类似于pip install ./test_module 或类似的东西来处理2.-3。自动。
我当前的setup.py 文件如下所示
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
)
【问题讨论】:
-
为什么你决定通过 git 与他人共享 python 包?为什么你不能把包上传到
pypi?我认为pip install test_module是一种轻松的方式。 -
我对@987654341@不是很熟悉,所以也没考虑。但截至目前,我只想与几个合作者分享这个包以进行开发,而不是与所有人分享。 git 似乎是这样做的自然选择,特别是因为该项目最初是在 git 上启动的。
-
好的。你能解释一下细节吗?不明白这个问题。您无需将软件包安装到
virtualenv即可运行所有功能。我的意思是它会是这样的:git clone...+virtualenv env+source env/bin/activate+pip install -r requirements.txt+python run something。此外,您不需要进行两次克隆和安装。不明白什么安装包到virtualenv。我的意思是如果你需要分享包pip + virtualenv是个好方法。但我不确定你是否需要它。 -
重点是
test_module是我自己的模块,即它只存在于本地。据我了解,我无法使用pip安装此类模块。如果有这样的方法,我想知道该怎么做(这是问题的一部分)。现在,我让它工作的方法是将export PYTHONPATH...添加到我的bin/activate脚本中,但这感觉有点hacky,我认为必须有更好的方法,而不必让其他人搞砸他们的activate脚本在他们的virtualenv中运行我的代码 -
我不明白你为什么不能使用 PyPI。无论如何,您可以使用
setup.py将软件包安装到任何virtualenv。source env/bin/activate,cd path_to_your_repo,python setup.py install
标签: python module virtualenv