Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 推荐的分发python包的方法,无需在PyPi上上载_Python 3.x_Pip_Windows 10 - Fatal编程技术网

Python 3.x 推荐的分发python包的方法,无需在PyPi上上载

Python 3.x 推荐的分发python包的方法,无需在PyPi上上载,python-3.x,pip,windows-10,Python 3.x,Pip,Windows 10,我正在尝试使用pip从源代码安装本地包,但我的代码没有复制到site packages文件夹中。而是创建一个文件夹,其中包含一个链接到python源代码路径的json文件。 这是预期的行为吗?在带有-e标志的开发模式下安装有什么区别 我的工作路径如下所示: ├── setup.py └── my_package ├── __init__.py └── module.py import setuptools setuptools.setup(name='my_package',

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

我的工作路径如下所示:

├── setup.py
└── my_package
    ├── __init__.py
    └── module.py
import setuptools
setuptools.setup(name='my_package', version='0.0.1')
     
我的setup.py文件如下所示:

├── setup.py
└── my_package
    ├── __init__.py
    └── module.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 .
python -m pip install .\my_package-0.0.1-py3-none-any.whl
在包含setup.py的文件夹中。 这将生成一个.whl文件,我的同事可以使用该命令安装该文件

python -m pip wheel .
python -m pip install .\my_package-0.0.1-py3-none-any.whl
ZipingYou的源代码包括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"])

您是否查看了此链接:关于主题打包有很多资源。与此相关的问题是,向同事分发我的包的建议方式是什么:您可以告诉pip从各种来源安装。哪种来源可能取决于你和你的同事们计划做什么。如果他们有贡献,我建议让pip从CVS安装,例如从这个包my_包所在的git repo安装。搜索:感谢您的帮助,我已经阅读了python打包指南。该指南提到,您可以在正常模式和开发模式下使用-e标记,但在我的python 3.8版本中,不会将包复制到站点包中。我的目标主要是将我的软件包分发给其他同事使用。我是代码的唯一维护者。