标签: setuptools

可以从setuptools setup.py中要求PyQt吗?

我正在构建一个使用PyQt的小应用程序,并且很高兴在setup.py中声明该依赖项.

然而,根据这个博客(谷歌首次点击pyqt setuptools)说它无法完成,而且这里的最后一段也没有尝试去做.

想法?也许我应该切换到PyPi上的PySide

更新:

显而易见的install_requires = [ 'pyqt >= 0.7' ]setup.py:

D:\3rd\BuildBotIcon\my-buildboticon\python>setup.py test
running test
install_dir .
Checking .pth file support in .
C:\Python26-32\pythonw.exe -E -c pass
Searching for pyqt>=4.7
Reading http://pypi.python.org/simple/pyqt/
Reading http://www.riverbankcomputing.com/software/pyqt/
Reading http://www.riverbankcomputing.com/software/pyqt/download
No local packages or download links found for pyqt>=4.7
error: Could not find suitable distribution for Requirement.parse('pyqt>=4.7')
Run Code Online (Sandbox Code Playgroud)

python distutils pyqt setuptools

16
推荐指数
2
解决办法
3558
查看次数

在PYTHONPATH环境变量之前的路径中的鸡蛋

如果我从easy_install安装了软件包,则会sys.pathPYTHONPATH变量中的项之前添加egg .

例如,如果我在当前目录中安装了一个名为foo的egg包以及一个名为foo的包,那么执行以下操作:

PYTHONPATH="." python
>>> import foo
Run Code Online (Sandbox Code Playgroud)

这将使用egg版本foo而不是本地目录.检查sys.path显示鸡蛋放在物品之前PYTHONPATH.这似乎破了.有没有办法覆盖这种行为?

python setuptools easy-install

16
推荐指数
1
解决办法
8900
查看次数

Python"setup.py develop":是否可以在源代码文件夹中创建".egg-info"文件夹?

Python有能力通过运行它的setup.py脚本来"伪装"一个包develop而不是install.这会修改python环境,因此可以从它的当前位置导入包(它不会被复制到site-package目录中).这允许开发其他包使用的包:源代码被修改到位,并且通过简单的更改可用于其余的python代码import.

一切正常,除了该setup.py develop命令创建一个.egg-info文件夹与元数据相同的文件夹setup.py.混合源代码和临时文件不是一个好主意 - 需要将此文件夹添加到从vcs和结束备份系统开始的多个工具的"忽略"列表中.

是否可以使用setup.py develop.egg-info在其他地方创建目录,因此原始源代码不会受到临时目录和文件的污染?

python distutils setuptools

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

使用setuptools更改默认dist文件夹

我用setuptools0.6来打包我的代码.默认情况下,当我键入时python setup.py sdist,该工具会直接在我的脚本的同一文件夹中创建一个文件夹dist.我可以做些什么来改变这个默认文件夹?编辑:另一个问题是,如果我的安装脚本和我的包文件夹不在同一个文件夹中,我该怎么做才能指定包的确切路径?谢谢

python directory packaging setuptools

16
推荐指数
1
解决办法
7979
查看次数

"__requires__"在python中意味着什么?

我是python中的新手.

有人可以回答__requires__以下代码中的含义吗?他们为什么要放在__requires__ = 'flower==0.4.0'文件的开头?

#!/srv/virtualenvs/zeusenv/bin/python

__requires__ = 'flower==0.4.0'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('flower==0.4.0', 'console_scripts', 'flower')()
)
Run Code Online (Sandbox Code Playgroud)

python setuptools

16
推荐指数
1
解决办法
4223
查看次数

setup.py:当必需的包名称包含短划线时,预期的括号列表

我正在编写一个可重用的Django应用程序,如下所述:https: //django.readthedocs.org/en/1.5.x/intro/reusable-apps.html

当我在setup.py中指定包含名称中包含破折号的要求时,setup.py将不会运行.例如,如果我的setup.py包含以下行:

requires=[ 'djangotinymce', 'MtFileUtil', 'Django', 'PyYAML', ],
Run Code Online (Sandbox Code Playgroud)

然后它正常工作.

python ./setup.py sdist
running sdist
...
Creating tar archive
Run Code Online (Sandbox Code Playgroud)

如果我将行更改为如下所示:

requires=[ 'django-tinymce', 'MtFileUtil', 'Django', 'PyYAML', ],
Run Code Online (Sandbox Code Playgroud)

我们得到一个奇怪的错误

Traceback (most recent call last):
  File "./setup.py", line 32, in <module>
    'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
  File "/usr/lib/python2.7/distutils/core.py", line 112, in setup
    _setup_distribution = dist = klass(attrs)
  File "/home/travis/venv/deleteme/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/dist.py", line 225, in __init__
    _Distribution.__init__(self,attrs)
  File "/usr/lib/python2.7/distutils/dist.py", line 259, in __init__
    getattr(self.metadata, "set_" + key)(val)
  File "/usr/lib/python2.7/distutils/dist.py", line 1220, …
Run Code Online (Sandbox Code Playgroud)

django setuptools distribute

16
推荐指数
1
解决办法
3603
查看次数

如何处理名称冲突的python包?

我正在使用两个具有相同名称的python包.

是否有规范或pythonic方式来处理安装两个名称冲突的包?到目前为止,我只是偶尔需要在开发/构建期间使用其中一个软件包,所以我一直在使用一个单独的virtualenv来处理冲突,但它使构建步骤更复杂,我想知道是否没有更好的方法来处理它.

python namespaces setuptools alembic

16
推荐指数
1
解决办法
2007
查看次数

.pypirc文件的自定义位置

是否setuptools允许.pypirc在自定义位置指定文件而不是$HOME/.pypirc?我正在设置jenkins作业以发布到内部存储库,并希望该.pypirc文件位于作业的工作区内.

python setuptools pypi jenkins

16
推荐指数
3
解决办法
6760
查看次数

如何动态添加和加载入口点?

我正在使用入口点开发一个带插件的松散机器人.我想在运行时动态添加插件.

我有一个这种结构的项目:

+ ~/my_project_dir/
    + my_projects_python_code/
    + plugins/
        - plugin1.py
        - plugin2.py
        - ...
        - pluginN.py
    - setup.py
    - venv/
    - install.sh
Run Code Online (Sandbox Code Playgroud)

我的setup.py文件看起来像这样:

from setuptools import setup, find_packages

setup(
    name="My_Project_plugins",
    version="1.0",
    packages=['plugins'],
    entry_points="""
        [my_project.plugins]
        plugin1 = plugins.plugin1:plugin1_class
        plugin2 = plugins.plugin2:plugin2_class
        ...
        pluginN = plugins.pluginN:pluginN_class
    """
        )
Run Code Online (Sandbox Code Playgroud)

运行sudo install.sh执行以下操作:

  1. 将所需文件复制到 /usr/share/my_project_dir/

  2. 激活virtualenv at /usr/share/my_project_dir/venv/bin/activate

  3. 跑: python setup.py develop

这按预期工作,并正确设置我的入口点,以便我可以通过机器人使用它们.

但我希望能够setup.py在机器人运行时添加插件并能够使用它.所以我想添加一行:pluginN+1 = plugins.pluginN+1:pluginN+1_class并且可以使用pluginN + 1.

我尝试/学到了什么:

  • /usr/share/my_project_dir/venv/bin/activate我打开一个Python交互式shell并迭代之后pkg_resources.iter_entry_points(),它列出了从setup.py的初始状态加载的所有东西(即plugin1到pluginN)

  • 如果我添加一行setup.py并 …

python plugins setuptools entry-point

16
推荐指数
2
解决办法
2577
查看次数

pip 下载而不执行 setup.py

如何下载发行版,可能是 sdist,而不可能执行setup.py文件(可能包含恶意代码)?

我不想递归获取依赖项,只为指定的发行版下载一个文件。尝试不起作用:

pip download --no-deps mydist
Run Code Online (Sandbox Code Playgroud)

这是一个可重现的示例,演示了setup.py在上述情况下仍然执行:

pip download --no-deps mydist
Run Code Online (Sandbox Code Playgroud)

我不能使用--no-binary选项,因为我不想排除源分发。我只是想避免执行他们的源代码。

python distutils pip setuptools pypi

16
推荐指数
2
解决办法
1176
查看次数