标签: distutils

setup.py的extras_require关键字是否支持以逗号分隔的附加内容?

Setuptools允许您列出可选功能的要求

# mypackage
'extras_require' : { 'PDF' : ['reportlab'], 'DOCX' : ['docxlib'] }
Run Code Online (Sandbox Code Playgroud)

另一个包可以指定'requires' : [ 'mypackage[PDF]' ].

如果另一个包想要从第一个包中需要多个额外的包,它可以要求'requires' : [ 'mypackage[PDF, DOCX]' ]吗?

python distutils setuptools

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

到底怎么回事...?Python C代码创建的文件的文件权限

如果我有以下C代码:

int main(int argc, char **arg)
{
    int x = open("testfilefromc", O_RDWR | O_CREAT);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译和运行不合理时创建这个:

-rw-r-----   1 joewass  staff     0B 31 Jan 21:17 testfilefromc
Run Code Online (Sandbox Code Playgroud)

但是下面的C代码,编译成Python模块:

const char *filename = "testfilefrompython";
context->fd = open(filename, O_RDWR | O_CREAT);
Run Code Online (Sandbox Code Playgroud)

做这个:

----------   1 joewass  staff   165B 31 Jan 21:09 testfilefrompython
Run Code Online (Sandbox Code Playgroud)

毫不奇怪,创建该文件的代码无法在下一轮打开它!

为什么文件会以零权限创建?为什么在编译成Python模块的C中行为会有所不同?我正在运行运行代码的python程序.

为了它的价值,我mmap稍后会把这个文件写进去.

谢谢!

编辑:我知道我可以chmod解决这个问题,问题是为什么

编辑2:感谢Rosh Oxymoron指出我错过了不那么可选的可选参数.TRWTF是第一个可行的例子!

c python distutils cpython

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

如何让 Python 和 distutils 在 Mac OS X 上使用正确的 SDK?

我在 Mac OS X 版本 10.6 上使用 Python。我最近安装了最新的 Mac OS X 开发工具 SDK,其中包含 GCC。我拥有的 SDK 有:

$ ls /Developer/SDKs/
MacOSX10.4u.sdk MacOSX10.5.sdk  MacOSX10.6.sdk
Run Code Online (Sandbox Code Playgroud)

每当我使用需要编译的“setup.py install”安装 python 包时,我想将 Mac OS X 10.6 与 Python/distutils 一起使用。

我注意到 Python 将 -isysroot 标志和路径传递给 Mac OS X 10.5(不是 10.6),即:

$ python-config --cflags --ldflags
-I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/Library/Frameworks/EPD64.framework/Versions/7.0/include
-L/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/config -ldl -framework CoreFoundation -lpython2.7 EPD64.framework/Versions/7.0/Python
Run Code Online (Sandbox Code Playgroud)

我该如何纠正这个问题?我希望它改用 10.6 SDK。

现在,当我在需要 C 编译的包上运行“python setup.py install”时,它会生成对 GCC …

python unix macos gcc distutils

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

使用一些data_files为PIP创建一个python包

我正在用这种布局做一个项目:

project/
    bin/
        my_bin.py
    CHANGES.txt
    docs/
    LICENSE.txt
    README.txt
    MANIFEST.in
    setup.py
    project/
        __init__.py
        some_thing.py
        default_data.json
        other_datas/
            default/
                other_default_datas.json
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用pip安装它时,它将"default_data.json""other_datas"文件夹放在与应用程序其余部分不在同一位置.

我怎么做让他们在同一个地方?

他们最终在"/home/user/.virtualenvs/proj-env/project"

而不是"/home/user/.virtualenvs/proj-env/lib/python2.6/site-packages/project"

在setup.py中,我这样做:

inside_dir = 'project'
data_folder= os.path.join(inside_dir,'other_datas')

data_files = [(inside_dir, [os.path.join(inside_dir,'default_data.json')])]
for dirpath, dirnames, filenames in os.walk(data_folder):
    data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])
Run Code Online (Sandbox Code Playgroud)

python distutils pip data-files package

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

Pypi注册和更新

我有一个我在Pypi注册的包裹.最近我做了一个更新,并希望从0.6.1增加版本 - > 0.7.0.现在,如果我跑,python setup.py sdist upload我得到一个错误:Upload failed (401): Incorrect password.

我以为我可能要再次注册但是会遇到类似的失败:

python setup.py register
...
Server response (401): basic auth failed
Run Code Online (Sandbox Code Playgroud)

在尝试注册时,它没有问我正常的问题:

We need to know who you are, so please choose either:
1. use your existing login,
2. register as a new user,
3. have the server generate a new password for you (and email it to you), or
4. quit
Run Code Online (Sandbox Code Playgroud)

我没有运气的文档或任何其他在线帮助.我希望我不需要再次注册包,但我无法弄清楚如何提供密码以便sdist upload工作.

我读过以下内容但没有成功:

http://guide.python-distribute.org/contributing.html

http://guide.python-distribute.org/quickstart.html

https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/

这非常有用,但仍然没有让我找到解决方案:

http://peterdowns.com/posts/first-time-with-pypi.html

有什么建议?

python distutils pypi

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

使 setuptools 与 one_file.py 一起工作的最小目录结构是什么?

one_file.py包含一些通用函数、类和main().

我想使用pip调用该函数的命令行脚本来安装它main()

什么是目录结构并且setup.py可以做到这一点?

python distutils pip setuptools

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

Python 3:setup.py:执行所有操作的pip install(build_ext + install)

我正在学习如何使用distutils,有些东西我不明白,我希望有人可以向我解释.

我已经成功创建了可以安装的tar.gz包

pip install mypackage.tar.gz
Run Code Online (Sandbox Code Playgroud)

我这样做setup.py,使用一个运行函数的简单脚本,setuptools.setup()我调用它python3 setup.py sdist.

我现在想学习的内容:如何在此构建扩展.

我的问题:我找不到任何全面的文本来解释如何pip install有一个build_ext类的包可以让它构建,然后安装.

如果我们看一下这个例子,对于着名的工具cx_freeze包,我们看到:

  • 有一个继承的build_ext
  • 有一种方法 build_extension()
  • in setup(),变量cmdclass,包含包含类的dictbuild_ext

我的问题:cx_freeze构建扩展然后安装它的原因是什么?是否有足够的cmdclass定义build_ext来实现这一目标?

python distutils setuptools setup.py python-3.x

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

Distutils 在构建 python 扩展时部分忽略 CC 环境变量

我正在尝试安装 subprocess32 python 模块(https://github.com/google/python-subprocess32),但 distutils 遇到一些问题。该模块包含必须构建的 C 扩展,但是当我运行 或 时,pip install .python setup.py install得到以下输出:

...
creating build
creating build/temp.linux-x86_64-2.7
/non/existent/path/gcc -pthread -fPIC ... -c _posixsubprocess.c -o build/temp.linux-x86_64-2.7/_posixsubprocess.o
unable to execute '/non/existent/path/gcc': No such file or directory
Run Code Online (Sandbox Code Playgroud)

显然,由于某种原因,distutils 使用了错误的 gcc 路径。然后我尝试使用手动指定 gcc 的正确路径export CC=/correct/path/to/gcc,得到以下输出:

building '_posixsubprocess' extension
creating build/temp.linux-x86_64-2.7
/correct/path/to/gcc -fPIC -fno-strict-aliasing -g -O2 ... -c _posixsubprocess.c -o build/temp.linux-x86_64-2.7/_posixsubprocess.o
/non/existent/path/gcc -pthread -shared ... build/temp.linux-x86_64-2.7/_posixsubprocess.o -o build/lib.linux-x86_64-2.7/_posixsubprocess.so
unable to execute '/non/existent/path/gcc': No such file …
Run Code Online (Sandbox Code Playgroud)

python gcc distutils setuptools

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

剥离基于 python 的项目构建的共享库的最简单方法是什么?

distutils使用或编译 Python C-API 项目时setuptools,会产生未剥离的.so可执行文件,其大小要大得多。有没有一种方法可以轻松地剥离它们,而无需strip -s手动调用可执行文件?例如,有一个选项吗setup.py

python distutils

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

使用 setuptools/distutils 构建 PyInstaller exe 时,ensure_local_distutils 内部出现断言错误

我正在尝试将一些 Python 代码转换为.exePyInstaller。我的代码使用 distutils,这在过去已经让我有些头疼,因为它似乎重复了 setuptools 的功能,并且与它的交互很奇怪。例如,它需要未使用的setuptools 导入才能正常工作,这对我来说似乎非常不Python。

我需要在我的项目中使用这两个包。我在订单中导入了两个包,import setuptools; import distutils因为另一个订单抛出了一个已经令人担忧的警告。

我的脚本运行良好,但在我将其转换为 exe 后,我在 setuptools 的可疑子模块内得到了回溯_distutils_hack是的,它只是打印一个没有上下文的文件名。

Traceback (most recent call last):
  <18 lines omitted>
  File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
  File "_distutils_hack\override.py", line 71, in <module>
  File "_distutils_hack\__init__.py", line 71, in do_override
  File "_distutils_hack\__init__.py", line 59, in ensure_local_distutils
AssertionError: C:\Users\<omitted>\AppData\Local\Temp\_MEI294562\distutils\core.pyc 
Run Code Online (Sandbox Code Playgroud)

我在用

  • Python 3.7.7 on win32(但我用 3.8、3.9 和 3.10 复制了它)
  • pyinstaller==4.8(2022 年 1 月)Windows 版
  • distutils==3.7.7(内置) …

python distutils setuptools pyinstaller

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

标签 统计

distutils ×10

python ×10

setuptools ×5

gcc ×2

pip ×2

c ×1

cpython ×1

data-files ×1

macos ×1

package ×1

pyinstaller ×1

pypi ×1

python-3.x ×1

setup.py ×1

unix ×1