我认为这是一个简单的问题,但我还没有找到答案,所以我在这里发帖.
我有一个Python 3应用程序,我打包成一个平台轮.我有setup.py,一切都按预期工作.我唯一想知道的是生成的轮子总是包含一个ABI标签(如"cp34m"),当包含它时,我发现我实际上无法通过pip安装轮子.(我的构建脚本在运行之前会安装最新的pip,setuptools和wheel.)
解决方案很简单.我只需更改滚轮的文件名即可将"cp34m"更改为"none".这显然很容易添加到我的构建脚本中,但我想知道是否可以为bdist_wheel设置一个选项,以便生成的.whl文件没有自己设置?
我用来创建轮子的命令是(例如在x64上):
python setup.py bdist_wheel --plat-name win_amd64
这创造了一个像:
mpf_mc-0.30.0.dev269-cp34-cp34m-win_amd64.whl
然后在上传到PyPI之前重命名为:
mpf_mc-0.30.0.dev269-cp34-none-win_amd64.whl
通过手动重命名它似乎一切正常.但我想知道这是否是正确的方法,或者我错过了什么?
我在Python中有一个deque,我正在迭代.有时候,当我正在进行交互时,deque会发生变化RuntimeError: deque mutated during iteration.
如果这是一个Python列表而不是一个双端队列,我只是迭代一个列表的副本(通过一个切片my_list[:],但由于切片操作不能用于deques,我想知道什么是最pythonic处理这个的方法是?
我的解决方案是导入复制模块,然后迭代一个副本,这样for item in copy(my_deque):很好,但因为我搜索了这个主题的高低,我想我会在这里发帖询问?
我正在尝试为包含Cython模块的Python 3.4应用程序构建setup.py包.我的计划是有一个setup.py文件需要Cython并编译.pyx文件的想法通常我会在Win32(x86和x64)和Mac上运行它然后生成平台轮并将它们上传到PyPI,所以普通用户不需要Cython或编译任何东西.
目前我可以获取setup.py脚本来构建.pyd文件,但是它不会将构建的.pyd文件放在与原始.pyx文件相同的位置,这是我需要它的地方.
我尝试手动复制.pyd文件,但是当我通过bdist_wheel生成轮子时,我得到一个纯Python轮,我认为是错误的,因为根据平台,我的内置.pyx文件有不同版本.我还尝试了对Distribution类进行子类化并强制is_pure()返回False(如此处在Building Wheels部分中所述),但这不起作用.(仍然生成纯Python轮.)
我假设如果我可以获得setup.py脚本将编译后的文件放在正确的位置,那么轮子将不是纯Python,一切都会好的.
所以我的问题是:
有关我的设置的更多信息:我在setup.py脚本中使用setuptools(而不是distutils).我的setup.py的片段在这里(删除了很多东西以保持相关的东西):
from setuptools import setup, Extension
from Cython.Build import cythonize
from Cython.Distutils import build_ext
...
extensions = [
Extension(name='audio_interface',
sources=['mpf/mc/core/audio/audio_interface.pyx'],
include_dirs=include_dirs,
library_dirs=library_dirs,
libraries=libraries,
extra_objects=extra_objects,
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args),
...
setup(
...
ext_modules=cythonize(extensions),
cmdclass= {'build_ext': build_ext},
...
Run Code Online (Sandbox Code Playgroud)
谢谢!布赖恩
我想知道是否可以在 Sphinx 和/或 RST..include::指令中使用动态路径?
我这样做的原因是我在一个存储库中拥有 Sphinx 生成的一些开发人员文档,但我们在另一个存储库中有一堆单元测试,我们希望将其包含在文档中。如果我知道其他存储库中文件的路径,那么它是非常标准的,如下所示:
Some text in my RST file
.. include:: ../path/to/other/repo/file.py
:code: python
Some more text
Run Code Online (Sandbox Code Playgroud)
问题是其他存储库的相对路径并不总是相同,具体取决于克隆和安装的方式。例如,在阅读文档时,另一个存储库通过子文件夹以可编辑模式安装requirements.txt,/src本地存储库位于 git 文件夹中,等等。
我可以在conf.py文件中添加逻辑来查找其他存储库并设置一个可以在 RST 文件中使用的指针,但我无法弄清楚是否可以在..include::?
到目前为止,我能想到的唯一解决方法是让我conf.py找到另一个存储库并创建一个我在 RST 文件中引用的符号链接,这很好,但我想知道是否有更好的方法?