【问题标题】:Recommended way to distribute my python package without uploading on PyPi推荐的方式来分发我的 python 包而不在 PyPi 上上传
【发布时间】:2021-08-02 23:43:43
【问题描述】:

我正在尝试使用 pip 从源代码安装本地包,但我的代码没有被复制到 site-packages 文件夹中。而是使用链接到我的 python 源代码路径的 json 文件创建一个文件夹。 这是预期的行为吗?与在开发模式下安装(使用 -e 标志)有什么区别。

我的工作路径是这样的:

├── setup.py
└── my_package
    ├── __init__.py
    └── module.py

我的 setup.py 文件如下所示:

import setuptools
setuptools.setup(name='my_package', version='0.0.1')
     

我正在打字:

python -m pip install .

然后当我在 python 中导入我的包时,它告诉我导入的包位于我的源代码文件夹中:

>>> import my_package
>>> my_package.__file__
path/to/my/desktop

在不将其上传到 PyPi 的情况下,将我的包分发给我的同事的推荐方法是什么? 也有人可以向我解释可以使用 setuptools 生成的 .wheel、.tar.gz 和 .egg 文件之间的区别及其用例吗?

【问题讨论】:

  • 这个链接你查了吗:packaging.python.org主题打包的资源很多。
  • 与问题“将我的包分发给我的同事的推荐方法是什么”相关:您可以告诉 pip 从各种来源安装。哪个来源可能取决于您和您的同事打算做什么。如果他们有贡献,我建议让 pip 从 CVS 安装,例如来自这个包my_package 所在的git repo。搜索:duckduckgo.com/?q=pip+install+from+git+repository
  • 感谢您的帮助,我已经阅读了python打包指南。该指南提到您可以install from source tree,但是在正常模式和开发模式(-e 标志)中,该包不会使用我的 python 版本(3.8)复制到站点包中。我的目标主要是分发我的包给其他同事使用。我是我的代码的唯一维护者。

标签: python-3.x pip windows-10


【解决方案1】:

我找到了适合我的解决方案。 我使用命令从我的包中生成一个 .whl 文件

python -m pip wheel .

在包含 setup.py 的文件夹中。 这会生成一个 .whl 文件,我的同事可以使用命令安装该文件

python -m pip install .\my_package-0.0.1-py3-none-any.whl

压缩源代码(包括 setup.py)也可以,但看起来不太干净。

我还发现为什么从没有 -e 标志的源代码安装不会将我的代码复制到我的“站点包”文件夹中。安装包会生成两个文件夹:“my_package-0.0.1.dist-info”文件夹和“my_module”文件夹。 我在 setup.py 脚本中缺少“包”kwarg,因此创建了版本信息文件夹,但没有创建包含代码的文件夹。下面是一个更正的 setup.py

import setuptools
setuptools.setup(name="my_package", version='0.0.1', packages=["my_package"])

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 2014-09-09
    • 2021-05-06
    • 2017-03-29
    • 2018-03-23
    • 2021-03-29
    相关资源
    最近更新 更多