想要通过从我想要打包的目录之外的目录运行python setup.py sdist
来创建python源代码分发。似乎找不到办法做到这一点。我有一个动态生成setup.py
和MANIFEST.in
的脚本,我想告诉python使用这些文件在不同的目录中创建源的sdist" over有"
我正在做的是创建一个脚本,让用户创建一个没有任何setup.py
等的sdist。他们只是说"打包这个目录及其下的所有内容" 。因此,我在python setup.py
目录(在MANIFEST.in
之类的无关文件路径中)生成recursive-include *
和tempfile.mkdtemp
(带/tmp/whatever
以获取所有文件)我可以事后清理......但我似乎无法使用它们打包他们的目录。我不想在源目录中创建这些文件。
答案 0 :(得分:1)
有点乱,但这对我有用。在运行setup()之前,请使用os.chdir()将目录更改为通常运行setup.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'))