4

python setup.py sdist想要通过从我想要打包的目录之外的目录运行来创建 python 源代码分发。似乎无法找到一种方法来做到这一点。我有一个动态生成setup.py和生成的脚本,MANIFEST.in我想告诉 python 使用这些文件在“那里”的不同目录中创建源的 sdist。

我正在做的是创建一个脚本,让用户创建一个没有任何等的 sdist setup.py。他们只是说“打包这个目录及其下的所有内容”。因此,我在python目录(在不相关的文件路径中setup.py,如 我不想在它们的源目录中创建这些文件。MANIFEST.inrecursive-include *tempfile.mkdtemp/tmp/whatever

4

2 回答 2

1

Sort of a hack, but this worked for me. Right before running setup(), use os.chdir() to change the directory to that of the base path where setup.py would normally run. To specify where the distribution packages go, I use the arguments to setup.py, specifically:

python setup.py sdist --formats=gztar -d 'directory_for_the_distribution' egg_info --egg-base 'directory_for_the_egg_info'

Thus you can run setuptools from a directory other than at the base of the package directories and the distribution and temp egg directories go wherever you want.

于 2020-08-03T21:00:34.900 回答
1

可以使用 setuptools--dist-dir=DIR/-d DIR选项来指定默认的dist/文件夹的创建位置。换句话说,这会改变输出目录。

例如:

python setup.py sdist -d /tmp/whatever

如果您正在使用distutils.core:而不是使用,from distutils.core import setup您可以使用from setuptools 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'))
于 2017-12-23T00:49:36.810 回答