我想在某些情况下自动化上传过程错误python setup.py upload失败,因为pypi服务器已经上传了保存版本.
如何从脚本强制上传(我知道我可以使用Web界面删除旧版本).
目前我正在使用自动工具来构建/安装和打包我的项目,但我真的想转向感觉更"pythonic"的东西.
我的项目包括两个脚本,一个模块,两个glade GUI描述和两个.desktop文件.它目前是一个纯粹的python项目,虽然很快就会改变.
看看setuptools,我可以很容易地看到如何处理除.desktop文件之外的所有内容; 他们必须最终进入特定目录,以便Gnome可以找到它们.
使用distuils/setuptools是一个好主意吗?
如果我用Python写一个分发包,我把一些脚本在被视为可执行文件scripts的setup.py,有没有办法让他们不要有*.py扩展名的标准方式?仅仅制作没有.py扩展名的文件,还是需要额外的东西?是否会从文件名中删除.py,这会破坏与setup.py/ distutils等Python工具相关的任何功能?谢谢.
我有一个setup.py正在处理的项目的文件,需要提供几个尚未在奶酪店中发布的第三方软件包.其中一个是来自这个git存储库的'spine'和'pyguts'模块:
https://github.com/terrysimons/spine-python
通常我可以通过在我的setup.py文件中指定以下项来从gitgub安装东西(为清楚起见,省略了几行):
#! /usr/bin/python
# Encoding: UTF-8
from setuptools import setup, find_packages
setup(
# More stuff in here...
dependency_links=[
'https://github.com/bitcraft/PyTMX/archive/master.zip#egg=PyTMX',
],
install_requires=[
'PyTMX',
],
)
Run Code Online (Sandbox Code Playgroud)
但是,这只能起作用,因为PyTMXsetup.py在存储库的根目录中有它的文件.
如果我尝试为spine和pyguts存储库做类似的事情,就像这样:
#! /usr/bin/python
# Encoding: UTF-8
from setuptools import setup, find_packages
__version__ = '0.0.1'
setup(
dependency_links=[
'https://github.com/bitcraft/PyTMX/archive/master.zip#egg=PyTMX',
'https://github.com/terrysimons/spine-python/archive/master.zip#egg=spine',
],
install_requires=[
'PyTMX',
'spine',
],
)
Run Code Online (Sandbox Code Playgroud)
然后distutils抱怨我跑python setup.py install:
Searching for spine
Best match: spine [unknown version]
Downloading https://github.com/terrysimons/spine-python/archive/master.zip#egg=spine
Processing master.zip
error: Couldn't find …Run Code Online (Sandbox Code Playgroud) 为什么这会创建 2 个 tar.gz 文件, '
python setup.py sdist?我正在尝试使用上传
twine upload -r pypitest dist/*.tar.gz,但出现错误提示
HTTPError: 400 Client Error: Only one sdist may be uploaded per release. for url: https://test.pypi.org/legacy/
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)
这是完整的setup.py
我有一个完全在python中实现的python模块。(出于便携性原因。)
cython模块中已复制了一小部分的实现。在可能的情况下提高性能。
我知道如何使用来安装.ccython创建的模块distutils。但是,如果一台机器没有安装编译器,我怀疑即使该模块在纯python模式下仍然可用,安装也会失败。
有没有办法编译该.c模块(如果可能的话),但无法正常运行,如果无法编译,则在没有该模块的情况下进行安装?
这是我的设置.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
wrapper = Extension(
name="libwrapper",
...
)
setup(
name="libwrapper",
ext_modules=cythonize([wrapper])
)
Run Code Online (Sandbox Code Playgroud)
当我运行python3 setup.py build_ext输出文件时,称为libwrapper.cpython-36m-x86_64-linux-gnu.so,但我只想命名它libwrapper.so,我该怎么做?
我有一个python项目,它使用谷歌protobufs作为通过网络进行通信的消息格式.使用该protoc程序直接从.proto文件生成python文件.如何setup.py为项目配置文件以便自动调用protoc命令?
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 仅具有历史意义。
我在这里缺少什么?
distutils2 ×9
distutils ×7
python ×7
setuptools ×3
pypi ×2
setup.py ×2
c ×1
cython ×1
github ×1
gnome ×1
package ×1
packaging ×1
python-3.x ×1
twine ×1