我想通过从我想打包的目录之外的目录运行python setup.py sdist来创建python源代码发行版。似乎找不到方法来做到这一点。我有一个动态生成setup.py和MANIFEST.in的脚本,我想告诉python使用这些文件在“那里”的不同目录中创建源代码的sdist。
我正在做的是创建一个脚本,让用户创建一个没有任何setup.py的sdist,他们只是说“打包这个目录和它下面的所有东西”。所以我在python的tempfile.mkdtemp目录(在一个不相关的文件路径,如/tmp/whatever)中生成了一个setup.py和MANIFEST.in (用recursive-include *抓取所有文件),我可以清理afterwards...but,我似乎不能用它们来打包他们的目录。我不想在它们的源目录中创建这些文件。
发布于 2017-12-23 08:49:37
您可以使用can use setuptools的,--dist-dir=DIR / -d DIR选项来指定创建默认dist/-文件夹的位置。换句话说,这会更改输出目录。
例如:
python setup.py sdist -d /tmp/whatever如果您使用的是distutils.core:您可以使用from setuptools import setup来代替from distutils.core import setup。
为了定义源目录的来源,我认为您可以将该目录添加到sys.path,然后setup()将自动发现内容文件:
import sys
from os import path
# ...
# Add other folders to sys.path
sys.path.append('/tmp/whatever')
sys.path.append(path.join(path.abspath('..'), 'some', 'folder'))发布于 2020-08-04 05:00:35
有点像黑客,但这对我很管用。在运行setup.py ()之前,使用os.chdir()将目录更改为通常运行setup的基本路径的目录。为了指定分发包的位置,我使用了setup.py的参数,特别是:
python setup.py sdist --formats=gztar -d 'directory_for_the_distribution' egg_info --egg-base 'directory_for_the_egg_info'因此,您可以从一个目录运行setuptools,而不是在软件包目录的基础上,而将分发和temp egg目录放在您想要的任何位置。
https://stackoverflow.com/questions/47948807
复制相似问题