标签: distutils

如何在Python setup.py脚本中将标志传递给gcc?

我在C中编写了一个Python扩展,它需要CoreFoundation框架(以及其他内容).这编译好:

gcc -o foo foo.c -framework CoreFoundation -framework Python
Run Code Online (Sandbox Code Playgroud)

("-framework"是一个仅限Apple的gcc扩展,但这没关系因为我正在使用他们的特定框架)

如何告诉setup.py将此标志传递给gcc?

我试过这个,但它似乎不起作用(它编译,但当我尝试运行它时抱怨未定义的符号):

from distutils.core import setup, Extension
setup(name='foo',
      version='1.0',
      author='Me',
      ext_modules=[Extension('foo',
                             ['foo.c'],
                             extra_compile_args=['-framework CoreFoundation'])])
Run Code Online (Sandbox Code Playgroud)

编辑:

这似乎有效:

from distutils.core import setup, Extension
setup(name='foo',
      version='1.0',
      author='Me',
      ext_modules=[Extension('foo',
                             ['foo.c'],
                             extra_link_args=['-framework', 'CoreFoundation'])])
Run Code Online (Sandbox Code Playgroud)

python distutils python-c-api

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

Python无法在Mac OSX上找到distutils_path

我一直在使用virtualenv + pip进行python开发.我不确定发生了什么,但每当我尝试运行命令行工具或导入库时,我都会收到以下错误消息:

Traceback (most recent call last):
  File "/Users/kyle/.virtualenvs/fj/bin/pip", line 4, in <module>
    import pkg_resources
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 698, in <module>
    the platform/python version defined at initialization are added.
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 701, in Environment
    search_path = sys.path
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 96, in get_supported_platform
    'Environment', 'WorkingSet', 'ResourceManager',
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 221, in get_build_platform
    if provDarwin:
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/distutils/__init__.py", line 14, in <module>
    exec open(os.path.join(distutils_path, '__init__.py')).read()
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/__init__.py'
Run Code Online (Sandbox Code Playgroud)

从我可以破译的内容来看,Python试图distutils_path在Mac OSX系统版本中找到Python,而不是像我应该的那样的virtualenv版本. …

python macos distutils virtualenv

21
推荐指数
3
解决办法
8174
查看次数

如何在setup.py脚本中为Python扩展模块指定头文件?

如何在setup.py脚本中为Python扩展模块指定头文件?使用源文件列出如下不起作用.但我无法弄清楚在哪里列出它们.

from distutils.core import setup, Extension
from glob import glob

setup(
    name = "Foo",
    version = "0.1.0",
    ext_modules = [Extension('Foo', glob('Foo/*.cpp') + glob('Foo/*.h'))]
)
Run Code Online (Sandbox Code Playgroud)

python distutils

21
推荐指数
3
解决办法
9381
查看次数

如何以编程方式/通过Python脚本安装Python模块?

我可以下载并安装一封来自PyPI Python模块严格意义上的脚本中,不使用外壳在所有

我使用非标准的Python环境,Autodesk Maya的Python解释器.这不是"easy_install",并且没有"shell",只有主Maya可执行文件调用的python脚本解释器.将ez_setup.py的内容复制并粘贴到脚本编辑器窗口并正确运行它会将easy_install安装到Maya的目录中,但脚本会错误地将Python解释器记录为"... maya.exe"而不是"... mayapy.exe "此外,使用easy_install需要一个shell.

目标是提供一个Python脚本,例如,将NumPy安装到Maya Python系统中.这可以通过将egg放入site-packages目录来完成,但这需要手动用户干预.最终用户在Maya环境之外必须做的任何事情基本上是不可触及的,尤其是弄乱文件系统.但是通过脚本搞乱文件系统?没关系.

有没有比ez_setup.py更优雅的东西+编辑生成的easy_install ... py的+子进程调用?我觉得这是一个基本功能.我通过pip在线查看程序模块安装的文档...但是需要首先安装pip!

在脚本范围内严格安装模块的最优雅方法是什么?

python distutils pip maya easy-install

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

从命令行上传时如何覆盖pypi包?

我想在某些情况下自动化上传过程错误python setup.py upload失败,因为pypi服务器已经上传了保存版本.

如何从脚本强制上传(我知道我可以使用Web界面删除旧版本).

distutils pypi distutils2

21
推荐指数
2
解决办法
6507
查看次数

Python的MANIFEST.in文件中的graft命令是什么?

我发现了一个带有MANIFEST.in文件的Python项目.我可以猜到它的大部分含义,但我不清楚这条线的含义:

graft tools
Run Code Online (Sandbox Code Playgroud)

python distutils manifest setup.py

21
推荐指数
1
解决办法
6164
查看次数

为什么我收到错误 ModuleNotFoundError:没有名为“distutils”的模块?

我已经安装了scikit-fuzzy,但是当我import skfuzzy as fuzz收到错误时

ModuleNotFoundError: No module named 'distutils'"
Run Code Online (Sandbox Code Playgroud)

我已经尝试过pip uninstall distutils并得到了这个输出

Note: you may need to restart the kernel to use updated packages.
WARNING: Skipping distutils as it is not installed.
Run Code Online (Sandbox Code Playgroud)

然后我尝试再次安装pip install distutils

Note: you may need to restart the kernel to use updated packages.
ERROR: Could not find a version that satisfies the requirement distutils (from versions: none)
ERROR: No matching distribution found for distutils
Run Code Online (Sandbox Code Playgroud)

由于我使用Python 3.12,我也尝试使用pip3 …

python distutils setuptools skfuzzy python-3.12

21
推荐指数
2
解决办法
2万
查看次数

在distutils中重命名脚本文件

我有一个python脚本myscript.py,我希望使用distutils安装:

from distutils.core import setup
setup(..., scripts=['myscript.py'], ...)
Run Code Online (Sandbox Code Playgroud)

如果我可以使用myscript而不是键入来调用已安装的脚本,我更喜欢myscript.py.这可以通过将文件重命名为just来实现,myscript但许多编辑器等将不再理解它是Python文件.

有没有办法保留旧名称,myscript.py但仍然安装文件myscript

python distutils

20
推荐指数
3
解决办法
3887
查看次数

重写cmdclass时忽略python setuptools install_requires

我有一个setup.py看起来像这样:

from setuptools import setup
from subprocess import call
from setuptools.command.install import install

class MyInstall(install):
    def run(self):
        call(["pip install -r requirements.txt --no-clean"], shell=True)
        install.run(self)

setup(
    author='Attila Zseder',
    version='0.1',
    name='entity_extractor',
    packages=['...'],
    install_requires=['DAWG', 'mrjob', 'cchardet'],
    package_dir={'': 'modules'},
    scripts=['...'],
    cmdclass={'install': MyInstall},
)
Run Code Online (Sandbox Code Playgroud)

我需要MyInstall因为我想从github安装一些库而我不想使用dependency_links选项,因为它不鼓励(例如这里),所以我可以用requirements.txt来做这件事.

当我安装这个软件包时pip,一切都运行正常,但由于某些原因,我必须以一种纯粹的方式解决这个问题python setup.py install.它没有.

当覆盖cmdclasssetup()与我自己的类,install_requires似乎被忽略.一旦我注释掉那一行,就会安装这些软件包.

我知道例如在distutils中不支持install_requires(如果我记得很清楚),但它在setuptools中.然后cmdclass就不会有任何影响install_requires.

我用Google搜索了这个问题几个小时,在stackoverflow上找到了很多相关的答案,但不是针对这个特殊的问题.

把所有需要的包放到requirements.txt,一切都运行正常,但我想了解为什么会这样.谢谢!

python distutils setuptools install-requires

20
推荐指数
2
解决办法
4474
查看次数

setuptools.setup() 接受哪些关键字参数?

setuptools.setup() 函数接受的关键字参数的完整列表是什么?(如果可能,请说明每个参数的含义。)

我已经浏览了整个网络,我不敢相信这没有记录。

我找到了这些文件:

但即使我将这些结合起来,它们也缺少其他参数,例如

  • 脚本
  • 包裹
  • 提供
  • 过时的

...我不知道还有多少论据丢失了。

setuptools.setup() 函数接受的关键字参数的完整列表是什么?

python distutils pip setuptools easy-install

20
推荐指数
1
解决办法
5817
查看次数