这是示例场景.
有一个python包not-mine,我刚刚发现了一个小bug.我在github上找到源代码并分叉存储库.我进行了必要的更改并提交了拉取请求.不幸的是,包裹作者正在度假,我有一个截止日期.
我需要一种方法来安装我的分叉存储库而不是生活在PyPI上的作者版本.我试过以下但没有成功:
install_requires = [
'not-mine==1.0.0'
],
dependency_links = [
'http://github.com/my-username/not-mine/tarball/master#egg=not-mine-1.0.0'
]
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我在调查问题时偶然发现的资源: 如何让setuptools安装一个不在PyPI上的软件包?
如何将Python模块与预编译.so库一起打包?具体来说,setup.py当我在Python中执行此操作时,如何编写
>>> import top_secret_wrapper
Run Code Online (Sandbox Code Playgroud)
它可以很容易地找到top_secret.so而不必设置LD_LIBRARY_PATH?
在我的模块开发环境中,我有以下文件结构:
.
??? top_secret_wrapper
? ??? top_secret.so
? ??? __init__.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)
在里面__init__.py,我有类似的东西:
import top_secret
Run Code Online (Sandbox Code Playgroud)
这是我的 setup.py
from setuptools import setup, Extension
setup(
name = 'top_secret_wrapper',
version = '0.1',
description = 'A Python wrapper for a top secret algorithm',
url = None,
author = 'James Bond',
author_email = 'James.Bond.007@mi6.org',
license = 'Spy Game License',
zip_safe = True,
)
Run Code Online (Sandbox Code Playgroud)
我确定我setup.py缺少一个指定位置的设置top_secret.so,虽然我不知道该怎么做.
有人可以向我解释一下ubuntu 9.04中python的用途吗?
我正试图旋转virtualenv,--no-site-packages旗帜似乎与ubuntu无关.我安装virtualenv 1.3.3了easy_install(我已经升级到setuptools 0.6c9),似乎安装了一切/usr/local/lib/python2.6/dist-packages
我假设在使用apt-get安装软件包时,它被放入/usr/lib/python2.6/dist-packages/?
问题是,还有一个/usr/local/lib/python2.6/site-packages只是坐在那里是空的.看起来(通过查看patha virtualenv),这是virtualenv用作备份的文件夹.因此,即使我想省略--no-site-packages,我也无法从我的任何virtualenv访问我的本地系统包.
所以我的问题是:
virtualenv指向其中一个dist-packages?/usr/lib/python2.6/dist-packages要么/usr/local/lib/python2.6/dist-packages//usr/lib/python2.6/site-packages?那里什么都没有!/usr/local/lib/python2.6/dist-packages/和更老版本(来自ubuntu repos/apt-get)/usr/lib/python2.6/dist-packages,哪一个导入我import xyz?我假设这是基于路径列表,是吗?easy_install应该安装到哪里定义/usr/local/lib/python2.6/dist-packages?pip吗?感谢任何能够清除这一点的人!
我最近开始学习Python,我对如何分发和安装软件包感到困惑.
我知道安装软件包的官方方式是distutils:你下载源tarball,解压缩它,然后运行:python setup.py install,然后模块将自动安装自己
我也知道带有帮助脚本的setuptoolseasy_install.它使用鸡蛋进行分发,根据我的理解,它构建在distutils之上并执行与上面相同的操作,并且它处理所需的任何依赖项,所有依赖于PyPi
然后还有pip,我仍然不确定它与其他人有什么不同.
最后,当我在Windows机器上时,许多软件包还通过Windows安装程序提供二进制构建,特别是那些需要编译C/Fortran代码的软件包,否则这将是在Windows上手动编译的噩梦(假设您有MSVC)或MinGW/Cygwin开发环境,所有必要的库设置..尽管如此,尝试自己建立numpy或scipy,你会明白!)
所以有人可以帮助我理解所有这些,并解释每种方法的差异,利弊.我想知道每个人如何跟踪包(Windows注册表,配置文件,...).特别是,您将如何管理所有第三方库(能够列出已安装的软件包,禁用/卸载等).
我已经创建了一个C扩展,我想在我的Python包中启用(使用setuptools),只有传入命令行选项.最简单的方法是什么?
我似乎无法找到任何直截了当的方式来解决这个问题.
我试图使用easy_install安装一个模块调用的请求做
easy_install requests
Run Code Online (Sandbox Code Playgroud)
一周前我使用Python 2.6.5时运行良好,但今天我安装了Python 2.7.2,然后import requests在我的一个脚本中尝试但是失败了.我然后尝试重新安装请求,easy_install requests但收到此错误
install_dir /usr/local/lib/python2.6/dist-packages/
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 13] Permission denied: '/usr/local/lib/python2.6/dist-packages/test-easy-install-15207.pth'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/usr/local/lib/python2.6/dist-packages/
Perhaps your account does not have write access to this directory? If the
installation directory is a system-owned …Run Code Online (Sandbox Code Playgroud) 我有一个这样的项目:
??? CHANGES.txt
??? LICENSE
??? MANIFEST.in
...
??? docs
? ??? index.rst
??? negar
? ??? Negar.py
? ??? Virastar.py
? ??? Virastar.pyc
? ??? __init__.py
? ??? data
? ? ??? __init__.py
? ? ??? untouchable.dat
? ??? gui.py
? ??? gui.pyc
? ??? i18n
? ? ??? fa_IR.qm
? ? ??? fa_IR.ts
? ??? negar.pro
??? setup.py
...
Run Code Online (Sandbox Code Playgroud)
在里面我的文件Virastar.py需要一些数据data.untouchable.dat.它工作正常,直到我用这个安装项目setup.py:
setup(
...
include_package_data=True,
packages = find_packages() + ['negar'],
package_dir={'negar': 'negar'},
package_data={'negar': ['data/*.dat']}, …Run Code Online (Sandbox Code Playgroud) 我virtualenvwrapper在Ubuntu 12.04上运行和朋友(virtualenvwrapper 1.7.1.2,virtualenv 1.7.1.2,pip 1.0,Distribute 0.6.24,Python 2.7).为了能够pip install matplotlib我需要更新版本的Distribute/setuptools,所以我执行以下操作:
$ mkvirtualenv new_venv
$ pip install matplotlib # fails
$ easy_install -U distribute
# installs Distribute 0.7.3 in the venv,
# which then installs setuptools 1.3.1
$ pip install matplotlib # works
Run Code Online (Sandbox Code Playgroud)
但是,当我跑步时,pip freeze我得到:
argparse==1.2.1
distribute==0.7.3 # here's Distribute
matplotlib==1.3.1
nose==1.3.0
numpy==1.8.0
pyparsing==2.0.1
python-dateutil==2.2
six==1.4.1
tornado==3.1.1
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)
在哪里setuptools?我试过了pip install setuptools,它也没有出现在那里.
包dir结构就是这样
repodir/
-------- setup.py
-------- MANIFEST.in
-------- bin/
----------- awsm.sh
-------- sound/
------------ init.py
------------ echo/
----------------- init.py
----------------- module1.py
----------------- module2.py
------------ effects/
------------------- init.py
------------------- module3.py
------------------- module4.py
Run Code Online (Sandbox Code Playgroud)
setup.py
from setuptools import setup
setup(
name = 'sound',
version = '0.1',
author = 'awesomeo',
author_email = 'awesomeo@email.com',
description = 'awesomeo',
license = 'Proprietary',
packages = ['sound'],
scripts = ['bin/awsm.sh'],
install_requires = ['Django==1.8.2', 'billiard', 'kombu', 'celery', 'django-celery' ],
zip_safe = False,
)
Run Code Online (Sandbox Code Playgroud)
当我这样做 - python setup.py install时,只有sound/init .py被复制到/Library/Python/2.7/site-packages/sound/目录.
其余的子包回声,环绕声和效果根本不会被复制.Setuptools创建一个包含SOURCES.txt文件的sound.egg-info …
我有一个pyproject.toml与下面类似的 Python 项目。我用来python build生成一个用于在生产环境中安装的包。对于开发环境,我使用pip install -e .
我试图弄清楚如何确保为开发环境安装测试依赖项,而不是作为生产环境的一部分。
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools]
package-dir = {"" = "src"}
packages = [
"package-a",
"package-b",
]
[tool.setuptools.package-data]
"*" = [
"path/to/*.txt"
]
[project]
name = "my-project"
version = "0.0.1"
authors = [
{ name="devnectar", email="a@b.com" },
]
description = "description goes here"
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License", …Run Code Online (Sandbox Code Playgroud) setuptools ×10
python ×9
distutils ×2
pip ×2
virtualenv ×2
cython ×1
distribute ×1
easy-install ×1
fork ×1
github ×1
installation ×1
module ×1
package ×1
packages ×1
pypi ×1
setup.py ×1
ubuntu ×1