问题标签 [sdist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2066 浏览

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

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

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

0 投票
1 回答
1531 浏览

python - sdist/bdist_wheel 在 Linux 中不包括 pyc,但在 Windows 中包括

我正在尝试创建一个 Python 发行版,我必须在其中包含源代码和编译后的二进制文件。(是的,我阅读了反对/支持添加的论据.pyc,但我的用例需要.pyc添加)。在 Windows 中运行我的步骤,源代码和编译后的二进制文件都添加到输出文件中(我同时使用了sdistbdist_wheel)。

假设我有以下结构:

folderA包含源代码,同时folderB包含其子目录中的其他文件。

完成的步骤:

  1. 模块使用编译compileall
  2. 中的来源alpha被删除。中的来源beta被保留。
  3. python setup.py sdist|bdist_wheel

find_packages()在 setup.py 中使用来检测模块。在找到模块时alpha,未检测到模块beta

在Windows 中的结果.tgz和文件中,所有需要的文件都在那里。.whl一切都很好。

但是,在 Linux(具体是 Ubuntu)中执行相同的过程时,只beta添加了 中的模块和一些模块,folderB没有添加其他不同类型的文件和模块alpha. sdist只会给出 source whilebdist并且bdist_wheel只会给出.pycs。我知道这sdist是用于分发源文件,而bdist用于二进制文件。

我的问题是为什么 Windows 中的行为不同,是否可以在 Linux 中产生相同的输出(源文件和.pyc其他文件)?

我正在使用 Python 2.7。

0 投票
2 回答
581 浏览

python - 在 Python 中使用 data_files 递归添加数据文件夹

我想在安装我的项目时递归地添加文件夹mydata1mydata2根包。所以我把这个函数写在setup.py

然后在setup.py

创建 sdist 没问题:setup.py sdist upload -r mypypi

但是当我安装时,抛出异常:ValueError: too many values to unpack (expected 2).

我是 Python 新手。所以我不知道为什么。在这种情况下你能帮我吗?谢谢!

编辑: 这些代码具有相同的results

0 投票
0 回答
3059 浏览

python - pip install 后执行命令

我将我的包捆绑为 sdist zip 文件,之后我可以使用 pip install 在任何地方导入我的包,但我想在调用 pip install 后自动运行一些安装后命令。我不能使用 python setup.py install 因为它是一个 sdist 并且我正在使用 pip 来安装它。我确实有一个 PostInstall 类,但在 pip install 包之后没有运行。有没有办法在 pip install package 之后自动运行脚本。我曾尝试使用 postinstall,但它不起作用,而且我不确定如何在设置方法中使用脚本 atrib。

这是我的 setup.py 文件: Setup.py

我不能使用 python setup.py install 因为它是一个 sdist 并且我正在使用 pip 来安装它。我确实有一个 MyInstall 类,但在 pip install 包之后没有运行。

0 投票
1 回答
223 浏览

python - python setup.py register can't decode byte 0xff in position 0

I'm packaging my python code and hope to upload to my pypi, my setup.py is like this:

#xA;

then I successfully run these commands

#xA;

After these I can import my package and make a test case either.

But while I register and upload to pypi, it throws this decode error, I have searched and tried many times, all files are encoded by utf-8.

When I am using these commands on windows through powershell, it throws 'gbk' codec can't decode.

I'm not sure what happened actually, my first time uploading codes to pypi...

#xA;
0 投票
2 回答
238 浏览

python-3.x - Setuptools:使用具有不同所需包的构建变体

我想制作一个源分发(sdist),就所需的包而言,开发和目标平台需要有所不同。

更具体地说,当我为 Raspberry Pi(目标平台)打包时,我不需要opencv-python.因为 OpenCV 是从那里的源代码构建的,但在开发 PC(Ubuntu)上,我需要opencv-python.

我试图按照这样的技巧将--raspi参数传递给setup.py

当我运行时python3 setup.py sdist --raspi,这种方法在生成的./dist/mypackage.tar.gz/mypackage/mypackage.egg-info/requires.txt不再包含的程度上起作用opencv-python

但是当我运行时pip3 install ./dist/mypackage.tar.gz,我仍然得到一个错误,例如:

这也是当我传递--install-option="--raspi"pip3 install时,我在某处读到的将是setup.py从 运行时再次传递参数的一种方式pip

当我手动编辑分发setup.py( ./dist/mypackage.tar.gz/mypackage/setup.py) 并opencv-python从所需的包中删除时,pip3 安装工作。

还有其他方法可以为不同的构建设置不同的集合或要求吗?例如,使用两个不同的setup.cfg文件(如何?),每个文件指定他们的包集?我不太喜欢这种方法,因为我在这些方法中大部分都是重复的。

0 投票
1 回答
235 浏览

python - 如何在 setup.py 中指定 `--formats` sdist 选项?

我尝试在 linux 发行版上创建一个压缩的源 python 包,而不--formats在命令行上指定 sdist 选项(使用不支持此选项的现有 Jenkins 管道)。在这里的文档中,它指出:

(假设您没有在设置脚本或配置文件中指定任何 sdist 选项),sdist 会为当前平台创建默认格式的存档。默认格式在 Unix 上是 gzip 的 tar 文件 (.tar.gz),在 Windows 上是 ZIP 文件。

但它没有说明您应该如何在安装脚本中指定 sdist 选项?

0 投票
3 回答
1188 浏览

python - python setup.py sdist bdist_wheel 的输出目录

做的时候

它创建build, dist,packagename.egg-info目录。我想让它们脱离当前文件夹。

我试过:

  • --dist-dir=../dist: 可以使用sdistpackagename.egg-info仍然存在

  • --bdist-dir=../dist: 例如:

    有效,最终的 bdist 包位于../dist. 但是当前文件夹仍然有我不想要的新目录build, dist, 。packagename.egg-info

问题:如何将所有内容(sdist 和 bdist_wheel 的输出)放在当前文件夹之外?

当然,我可以用 , 等编写脚本mvrm -r但我想知道是否存在内置解决方案。

0 投票
0 回答
33 浏览

python - Python:在 setup.py 中更新 sdist 的文件输出

有没有办法用 python 标签sdist生成一个?.tar.gz基本上我正在构建我的库的两个版本(使用 python 3.5 和 python 3.7)。我可以用 bdist_wheel 指定 python 标记,但我不确定如何为 sdist 指定它。

目前我可以做

这会产生

我怎么能拥有somelibrary-0.4.6-py35.tar.gzsomelibrary-0.4.6-py37.tar.gz?是否有我可以设置的标志/参数,或者我应该在构建文件后重命名文件?

0 投票
1 回答
66 浏览

haskell - cabal new-sdist 也包含测试文件

我想为我的 Haskell 项目创建一个 sdist 包。为简单起见,我们假设以下项目结构:

cabal 文件中定义了两个目标

当我执行时,cabal new-sdist --list-only我得到以下列表:

我的问题:是否可以在 sdist 包中包含与测试相关的文件,或者我应该删除它们(如果是 - 如何)?