标签: distutils

setup.py build 有什么作用?

我在Python 文档中读到:

build 命令负责将要安装的文件放入构建目录。

我担心这个文档可能不完整。是否python setup.py build要做什么吗?我希望这一步用 Python 字节码生成目标文件,Python VM 将在执行时对其进行解释。

此外,我正在我的源代码存储库中构建自动代码检查。我想知道运行 setup.py build 是否有任何好处(它是否进行任何检查?)或者静态代码/PEP8 检查器(例如 Pylint)是否足够好?

python distutils

3
推荐指数
1
解决办法
1356
查看次数

python setup.py:如何设置生成的.so的路径

我有这个 setup.py:

from distutils.core import setup, Extension
from setuptools import setup, Extension
import numpy as np

module1 = Extension('filename',
                    sources = ['utilities/filename.c'])

setup (name = 'library',
       version = '1.0',
       description = 'library',
       include_dirs = [np.get_include()],
       ext_modules = [module1])
Run Code Online (Sandbox Code Playgroud)

我想在文件夹 utility 中创建 filename.so 。我尝试过

python setup.py build -f --build-temp=. -e utilities/
Run Code Online (Sandbox Code Playgroud)

但这只将 filename.o 文件放入utilities/中,并将.so放入build/lib中...

任何想法?可能还是不可能?

c python distutils setup.py

3
推荐指数
1
解决办法
2616
查看次数

如何为一组特定的 python 版本创建 Python 轮?py2.py3-none-any.whl 太宽泛

我有一个适用于 Python 2.4-2.7 的包。3.2-3.7。请注意,这并不适用于所有 Python 2 或 Python 3,而是特定版本。

碰巧这个包支持具有不同源代码的Python 2.4和2.5。

我一直在为每个版本分发鸡蛋,因为这是非常具体的,而且我setup.py bdist_wheel创建的东西太宽泛,无法匹配我不想匹配的 Python 版本。

py2.py3-non-any.whl当我创建一个轮子时,我会使用对于 Python 2.4 和 2.5 来说是错误的扩展。(压缩包也是如此)。

PyPi 只允许使用一个 tarball,所以现在我使用非 2.4、2.5 源代码。如果能够包含 2.4 2.5 源代码那就太好了。嗯,也许我可以把它做成拉链?(可能不会)。

我如何通知 setup.py 我只想要一个py35-non-any.whl?或者 py2 指定为 2.6 或 2.7?py3 仅适用于 3.2 及更高版本。

或者更一般地说,有什么简单的方法可以进行设置,以便无论运行什么 python 版本,pip 都会选择正确的 pypi 文件?

python distutils pip pypi

3
推荐指数
1
解决办法
5414
查看次数

Distutils:构建多个共享方法的 Python 扩展模块(用 Swig 编写)

我有四个C++文件:Ah、A.cpp、Bh、B.cpp,Ah包含在B.cpp中

啊:

#pragma once 
void A();
Run Code Online (Sandbox Code Playgroud)

A.cpp:

#include <iostream>
void A() {
    std::cout << "A" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

乙:

#pragma once
void B();
Run Code Online (Sandbox Code Playgroud)

B.cpp:

#include "A.h"
#include <iostream>
void B() {
    A();
    std::cout << "B" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

现在我写了两个SWIG接口文件Ai和Bi

人工智能:

%module A
%{
#include "A.h"
%}
%include "A.h"
Run Code Online (Sandbox Code Playgroud)

双:

%module B
%{
#include "B.h"
%}
%include "B.h"
Run Code Online (Sandbox Code Playgroud)

setup.py 文件是:

from distutils.core import setup, Extension
A_ext = Extension( "_A", [ "A.i", "A.cpp", ], swig_opts = ['-c++'], extra_compile_args = ['-g'])
B_ext = …
Run Code Online (Sandbox Code Playgroud)

c++ python swig distutils

3
推荐指数
1
解决办法
1752
查看次数

如何构建符合 PEP384 的 Python 扩展模块并使用正确的 ABI3 标签对其进行打包?

mymodule.c 启动如下:

#define PY_SSIZE_T_CLEAN
#define Py_LIMITED_API 0x03070000 
#include "Python.h"
Run Code Online (Sandbox Code Playgroud)

它构建时没有错误和警告。然而,生成的文件被命名为

mymodulename.cpython-37m-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

构建命令:

$ python setup.py build
Run Code Online (Sandbox Code Playgroud)

当我改为发出

$ pip wheel .
Run Code Online (Sandbox Code Playgroud)

轮子中包含的扩展名称相同,因此轮子也没有 ABI3 标签。

我期望文件名是 abi3 或类似的文件名,如 PEP 425 中所述。

到目前为止我的研究令人沮丧。我查看了 PEP 384 和 425、docs.python.org 上的文档和相关教程,特别是它的 C/API 和 distutils、PYPA 的文档、setuptools、wheel 和 pip 上的文档 - 无济于事。

当前 Python 源发行版中包含的文件 /modules/xxmodule.c 仅具有历史意义。
我在这里缺少什么?

c python distutils setuptools distutils2

3
推荐指数
1
解决办法
839
查看次数

我想要一些关于将它打包成鸡蛋并将其上传到pypi的建议

我写了一些代码,我想打包成鸡蛋.这是我的目录结构:

src/
src/tests
src/tests/test.py # this has several tests for the movie name parser
src/torrent
src/torrent/__init__.py
src/torrent/movienameparser
src/torrent/movienameparser/__init__.py # this contains the code

我想将这个目录结构打包为一个egg,并包含测试文件.我应该在setup.py文件中包含什么内容,以便我可以拥有任意数量的命名空间和任意数量的测试?

这是我想分享的第一个开源代码.即使可能,我将是唯一一个会发现这个模块有用的人,我想上传它pypi.我可以使用哪种许可证,允许用户使用代码执行他们想要的操作,对重新分发,修改没有限制?

即使我计划更新这个鸡蛋,我也不想对任何事情负责(例如为用户提供支持).我知道这可能听起来很自私,但这是我的第一个开源代码,所以请耐心等待.我是否需要提供许可证副本?我在哪里可以找到副本?

感谢阅读所有这些.

python distutils egg setuptools pypi

2
推荐指数
1
解决办法
273
查看次数

使用cx_Freeze分发哪些文件?

我正在使用cx_freeze来冻结Python脚本以便分发到其他Windows系统.我按照指示做了所有事情,cx_freeze build\exe.win32-2.6在包含我的源的文件夹中生成了一个 文件夹.该目录现在包含一堆PYD文件,一个library.zip文件,python DLL文件和主可执行文件.我需要分发哪些文件?伙计们,有什么帮助?

提前致谢.

python distutils cx-freeze

2
推荐指数
1
解决办法
829
查看次数

__init__.py的目的是什么?

在创建Python包时,我被告知要创建一个名为init .py 的空白文件.我不明白的是为什么我需要创建这个文件.在distutils构建脚本不会修改它,所以后来5建造它仍然是空白.它的目的是什么?

python distutils python-3.x

2
推荐指数
1
解决办法
2033
查看次数

使用cx_Freeze编译Python C扩展

我试图从带有C扩展模块的Python 3包在Windows上创建一个exe.在distutils中,您可以创建如下的扩展:

from distutils.core import setup, Extension

module1 = Extension('demo',
                     sources = ['demo.c'])

setup (name = 'PackageName',
       version = '1.0',
       description = 'This is a demo package',
       ext_modules = [module1])
Run Code Online (Sandbox Code Playgroud)

然后,扩展将使用适当的编译器进行编译,并与命令一起放在其他模块旁边:

python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)

cx_Freeze是一个模块,可以将您的代码与Python解释器和相关的包一起打包到exe文件中.然后,最终用户可以在不安装Python的情况下使用您的程序.不幸的是,cx_Freeze没有Extension类,我找不到用cx_Freeze处理编译的方法.

我不确定的一个解决方案是首先使用distutils/setuptools构建扩展,然后使用cx_Freeze创建可执行文件.我不想重新发明轮子,所以我想知道在这个领域有更多经验的人是否有解决方案.

python windows distutils cx-freeze

2
推荐指数
1
解决办法
447
查看次数

使用setuptools时是否有任何理由列出标准库依赖项?

我已经走下了Python包装和分销兔洞,我想知道:

是否有过任何理由提供标准库模块/包的依赖关系,setup()使用时setuptools

并且附注:我发现的唯一setuptools文档非常糟糕.有更好的吗?

谢谢

python distutils setuptools

2
推荐指数
1
解决办法
103
查看次数

标签 统计

distutils ×10

python ×10

setuptools ×3

c ×2

cx-freeze ×2

pypi ×2

c++ ×1

distutils2 ×1

egg ×1

pip ×1

python-3.x ×1

setup.py ×1

swig ×1

windows ×1