无需在 PyPi 上上传即可分发我的 python 包的推荐方法
Recommended way to distribute my python package without uploading on PyPi
我正在尝试使用 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 文件之间的区别,以及它们的用例吗?
我找到了适合我的解决方案。
我使用命令
从我的包中生成一个 .whl 文件
python -m pip wheel .
在包含 setup.py 的文件夹中。
这会生成一个 .whl 文件,我的同事可以使用命令
安装该文件
python -m pip install .\my_package-0.0.1-py3-none-any.whl
压缩您的源代码(包括 setup.py)也可以,但看起来不太干净。
我还发现了为什么从没有 -e 标志的源代码安装没有将我的代码复制到我的“site-package”文件夹中。安装包会生成两个文件夹:“my_package-0.0.1.dist-info”文件夹和“my_module”文件夹。
我在 setup.py 脚本中遗漏了“package”kwarg,因此创建了版本信息文件夹,但没有创建包含代码的文件夹。下面是更正后的 setup.py
import setuptools
setuptools.setup(name="my_package", version='0.0.1', packages=["my_package"])
我正在尝试使用 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 文件之间的区别,以及它们的用例吗?
我找到了适合我的解决方案。 我使用命令
从我的包中生成一个 .whl 文件python -m pip wheel .
在包含 setup.py 的文件夹中。 这会生成一个 .whl 文件,我的同事可以使用命令
安装该文件python -m pip install .\my_package-0.0.1-py3-none-any.whl
压缩您的源代码(包括 setup.py)也可以,但看起来不太干净。
我还发现了为什么从没有 -e 标志的源代码安装没有将我的代码复制到我的“site-package”文件夹中。安装包会生成两个文件夹:“my_package-0.0.1.dist-info”文件夹和“my_module”文件夹。 我在 setup.py 脚本中遗漏了“package”kwarg,因此创建了版本信息文件夹,但没有创建包含代码的文件夹。下面是更正后的 setup.py
import setuptools
setuptools.setup(name="my_package", version='0.0.1', packages=["my_package"])