可以从不同的目录创建python sdist吗?

时间:2017-12-23 00:38:14

标签: python sdist

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

我正在做的是创建一个脚本,让用户创建一个没有任何setup.py等的sdist。他们只是说"打包这个目录及其下的所有内容" 。因此,我在python setup.py目录(在MANIFEST.in之类的无关文件路径中)生成recursive-include *tempfile.mkdtemp(带/tmp/whatever以获取所有文件)我可以事后清理......但我似乎无法使用它们打包他们的目录。我不想在源目录中创建这些文件。

2 个答案:

答案 0 :(得分:1)

有点乱,但这对我有用。在运行setup()之前,请使用os.chdir()将目录更改为通常运行s​​etup.py的基本路径的目录。为了指定分发包的位置,我使用了setup.py的参数,具体是:

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

因此,您可以从软件包目录的最底层目录以外的目录运行setuptools,而发行目录和临时蛋目录可以随心所欲。

答案 1 :(得分:0)

can use setuptools--dist-dir=DIR / -d DIR选项可指定默认 dist / - 文件夹的位置。换句话说,这会更改输出目录。

E.g:

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'))