【问题标题】:Installing my own python module inside a virtual environment在虚拟环境中安装我自己的 python 模块
【发布时间】:2018-09-27 23:35:32
【问题描述】:

我有什么:

  • 我想转成模块的本地Python3文件test_module

  • test_module 文件夹包含一个空的 __init__.py、一个 setup.py 文件(见下文)和具有多个源的子目录 文件

我想要什么:

  1. 在本地持续改进和改进test_module

  2. 有一种简单的方法可以在我自己的虚拟环境中本地安装test_module 及其所有依赖项(使用python3 -m venv my_environment 创建)

  3. 通过 python myexample.py 运行使用模块的文件,而无需在每次进入或退出 my_environment 时调整我的本地 PYTHONPATH 变量

  4. 通过 git 与其他人共享我的 python 代码,并允许他们使用相同的过程(尽可能简单)在本地机器上安装他们的代码

  5. 了解如何创建自己的模块的最佳实践

我现在是怎么做的:

我想知道是否有基于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 是一种轻松的方式。
  • 我对@9​​87654341@不是很熟悉,所以也没考虑。但截至目前,我只想与几个合作者分享这个包以进行开发,而不是与所有人分享。 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 将软件包安装到任何virtualenvsource env/bin/activate, cd path_to_your_repo, python setup.py install

标签: python module virtualenv


【解决方案1】:

听起来你想在你的虚拟环境中运行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

如果您已经安装并想从 repo 中提取最新代码,请在上面添加 --upgrade 开关。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 2018-09-26
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多