首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从不同的目录创建python sdist吗?

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

Stack Overflow用户
提问于 2017-12-23 08:38:14
回答 2查看 1.9K关注 0票数 4

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

我正在做的是创建一个脚本,让用户创建一个没有任何setup.py的sdist,他们只是说“打包这个目录和它下面的所有东西”。所以我在python的tempfile.mkdtemp目录(在一个不相关的文件路径,如/tmp/whatever)中生成了一个setup.pyMANIFEST.in (用recursive-include *抓取所有文件),我可以清理afterwards...but,我似乎不能用它们来打包他们的目录。我不想在它们的源目录中创建这些文件。

EN

回答 2

Stack Overflow用户

发布于 2017-12-23 08:49:37

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

例如:

代码语言:javascript
复制
python setup.py sdist -d /tmp/whatever

如果您使用的是distutils.core:您可以使用from setuptools import setup来代替from distutils.core import setup

为了定义目录的来源,我认为您可以将该目录添加到sys.path,然后setup()将自动发现内容文件:

代码语言:javascript
复制
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'))
票数 1
EN

Stack Overflow用户

发布于 2020-08-04 05:00:35

有点像黑客,但这对我很管用。在运行setup.py ()之前,使用os.chdir()将目录更改为通常运行setup的基本路径的目录。为了指定分发包的位置,我使用了setup.py的参数,特别是:

代码语言:javascript
复制
python setup.py sdist --formats=gztar -d 'directory_for_the_distribution' egg_info --egg-base 'directory_for_the_egg_info'

因此,您可以从一个目录运行setuptools,而不是在软件包目录的基础上,而将分发和temp egg目录放在您想要的任何位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47948807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档