标签: setuptools

Setuptools不传递entry_points的参数

我正在使用setuptools来编写我编写的Python脚本

安装后,我做:

$ megazord -i input -d database -v xx-xx -w yy-yy
Run Code Online (Sandbox Code Playgroud)

就像我运行它一样./like_this

但是,我得到:

Traceback (most recent call last):
  File "/usr/local/bin/megazord", line 9, in <module>
    load_entry_point('megazord==1.0.0', 'console_scripts', 'megazord')()
TypeError: main() takes exactly 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

看起来像setuptools不会将我的参数发送到要解析的main()(通过optparse)

这是我对entry_points的setuptools配置:

entry_points = {
    'console_scripts': [ 
        'megazord = megazord.megazord:main',
        'megazord-benchmark = megazord.benchmark:main',
        'megazord-hash = megazord.mzhash:main',
        'megazord-mutate = megazord.mutator:main',
        ]
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python distutils setuptools

6
推荐指数
2
解决办法
7699
查看次数

如何让setup.py测试使用特定的fortran编译器?

我正在尝试测试包含一些f90文件的.如果我构建或安装并指定fortran编译器,它可以正常工作.但是,当我尝试测试时,我收到以下错误:

C:\Users\jsalvatier\workspace\scikits.bvp_solver>python setup.py config_fc --fcompiler=gfortran test
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running test
running egg_info
running build_src
build_src
building extension "scikits.bvp_solver.bvp_solverf" sources
f2py options: []
  adding 'build\src.win32-2.6\fortranobject.c' to sources.
  adding 'build\src.win32-2.6' to include_dirs.
  adding 'build\src.win32-2.6\scikits\bvp_solver\lib\bvp_solverf-f2pywrappers2.f90' to sources.
building data_files sources
build_src: building npy-pkg config files
writing scikits.bvp_solver.egg-info\PKG-INFO
writing namespace_packages to scikits.bvp_solver.egg-info\namespace_packages.txt
writing top-level names to scikits.bvp_solver.egg-info\top_level.txt
writing dependency_links to scikits.bvp_solver.egg-info\dependency_links.txt
reading manifest file 'scikits.bvp_solver.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'scikits.bvp_solver.egg-info\SOURCES.txt' …
Run Code Online (Sandbox Code Playgroud)

python fortran distutils setuptools

6
推荐指数
1
解决办法
7183
查看次数

如何从pkg_resources中的分发对象获取作者姓名,项目描述等?

pkg_resources api让我们获取表示目录中鸡蛋分布的Distribution对象。我可以使用dist.project_name和轻松获取项目名称和发行版本dist.version,但是我迷失了如何获取安装脚本中通常指定的其他元数据(例如作者,描述等)。

python setuptools distribute

6
推荐指数
1
解决办法
1154
查看次数

如何在我的主项目中添加setuptools entry_point作为示例?

我想让我的程序可插拔.我想使用setuptools的方式,使用鸡蛋.

我已经能够制作一个插件来为某些功能提供替代类,我可以使用它.

我想选择在运行时使用的类; 我的核心模块或任何插件中的一个.我想使用pkg_resources查询这些类的方式:

for entrypoint in pkg_resources.iter_entry_points("myapp.myclasses"):
Run Code Online (Sandbox Code Playgroud)

如何在核心中为我的类创建一个EntryPoint对象并注册它,以便iter_entry_points将以与我的.egg插件类相同的方式返回它?

python setuptools

6
推荐指数
1
解决办法
2058
查看次数

pip安装私有包

我有一个python包A依赖于另一个名为godot的私有包(托管在bitbucket,应该通过git + ssh协议访问).在包A的setup.py中,我有以下代码:

...
install_requires=['godot'],
dependency_links=['git+ssh://git@bitbucket.org/xxx/godot.git#egg=godot']
...
Run Code Online (Sandbox Code Playgroud)

我这里有两个问题:

  1. 现在setuptools 1.4(最新的稳定版本)不支持'git + ssh'协议,只有开发分支中的代码处理这个协议:Python setuptools:如何在install_requires下列出一个私有存储库?.我通过以下方式安装了开发版本:

    pip install --upgrade --force-reinstall hg+https://bitbucket.org/pypa/setuptools#egg=setuptools

    我几乎解决了这个问题,但我想知道是否有其他方法可用?调用pip install -r requirements.txt(在requirements.txt中有git + ssh://git@bitbucket.org/xxx/godot.git#egg=godot列表)?

  2. 第二个问题是名称冲突.pypi上还有另一个名为godot的软件包,所以当我使用follow命令安装软件包时,pip从pypi index安装了godot:

    pip install git+ssh://git@pypi.corp.com/xxx/A.git#egg=A

    如何强制pip(setup.py)来安装私有的godot包,而不是pypi索引上的那个?

python pip setuptools

6
推荐指数
1
解决办法
1641
查看次数

setuptools,numpy.distutils.core,install_requires和f2py扩展名

我一直在努力创建一个python包,其中包含一些我想在numpy中使用f2py合并的fortran代码.目标是将其上传到PyPI,以便用户可以使用pip进行安装.我做了一些研究,发现setuptools和numpy.distutils.core具有我想要的功能(我认为).包的结构如下,

rabacus  
--setup.py  
--README.txt  
--MANIFEST.in    
--rabacus  
----f2py  
----python_mod1  
----python_mod2  
----python_mod3 
Run Code Online (Sandbox Code Playgroud)

我在目录f2py中有fortran代码.我的包需要numpy和另一个名为quantity的python包,这两个包都在PyPI中.我已经使用install_requires关键字向setup函数指出了这一点.我的测试周期是这样的,

注册并上传包到PyPI

python setup.py register sdist upload
Run Code Online (Sandbox Code Playgroud)

创建一个没有系统包的虚拟环境

virtualenv --no-site-packages venv
Run Code Online (Sandbox Code Playgroud)

进入虚拟环境并尝试使用pip进行安装

cd venv/bin  
./pip install rabacus
Run Code Online (Sandbox Code Playgroud)

我想要检测未满足的要求(numpy和数量),下载它们然后继续我的包安装.我很困惑我应该调用哪个设置函数(来自setuptools的那个或来自numpy.distutils.core的那个).似乎有一个有install_requires,一个有ext_modules.到目前为止,当我在虚拟环境中执行pip命令时,我得到一个错误,抱怨找不到numpy

 Downloading/unpacking rabacus
  Downloading rabacus-0.9.0.tar.gz (1.7MB): 1.7MB downloaded
  Running setup.py egg_info for package rabacus
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/home/galtay/bitbucket/rabacus/venv/build/rabacus/setup.py", line 3, in <module>
        import numpy.distutils.core
    ImportError: No module named numpy.distutils.core
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line …
Run Code Online (Sandbox Code Playgroud)

python numpy setuptools f2py

6
推荐指数
0
解决办法
3065
查看次数

setuptools下载缓存路径

我可以为setuptools设置下载缓存路径吗?我可以通过设置环境变量PIP_DOWNLOAD_CACHE(如何缓存下载的PIP包)来实现pip ,但我不知道如何处理setuptools.

我每次跑步时都想要:

python setup.py develop
Run Code Online (Sandbox Code Playgroud)

setuptools缓存下载的文件,因此我不必再次下载它.

python setuptools

6
推荐指数
1
解决办法
966
查看次数

模块在安装模式下找到,但在使用setuptools的开发模式下没有

我是setuptools第一次使用,并尝试打包我的代码,以便其他人可以轻松地开发它.我在虚拟环境中运行一切.

简短的问题:如何在运行时更改egg-link指向的目录python setup.py develop

长问题:我正在开发的模块被称为cops_and_robots.当我跑步时python setup.py install,事情很好,我可以导入我的cops_and_robots模块.但是,当我运行时python setup.py develop,运行import cops_and_robots失败,因为cops_and_robots.egg-link指向错误的目录:

(cops_and_robots)Antares:cops_and_robots nick$ cat ~/virtual_environments/cops_and_robots/lib/python2.7/site-packages/cops-and-robots.egg-link 
/Users/nick/Downloads/cops_and_robots/
.
Run Code Online (Sandbox Code Playgroud)

这是目录结构:

|____Downloads
| |____cops_and_robots # the whole package directory
| | |____...
| | |____requirements.txt
| | |____setup.py
| | |____src
| | | |____cops_and_robots # the python package directory
| | | |______init.py__
| | |____...
Run Code Online (Sandbox Code Playgroud)

我的setup.py:

from setuptools import setup, find_packages
import …
Run Code Online (Sandbox Code Playgroud)

python egg setuptools setup.py

6
推荐指数
1
解决办法
1102
查看次数

Babel:调用setup.py install时编译翻译文件

我正在使用Babel开发Flask应用程序.由于Distutils/Setuptools集成,编译/提取/ ...函数的所有参数都存储在setup.cfg并编译i18n文件就像

./setup.py compile_catalog
Run Code Online (Sandbox Code Playgroud)

大.现在我希望在运行时自动完成

./setup.py install
Run Code Online (Sandbox Code Playgroud)

make的话,那将是让install目标取决于compile_catalog目标.

上下文

我们只.po在代码库中存储translation()文件..gitignore排除.mo.pot跟踪文件.

当开发人员提取代码的新版本时,他会运行

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

更新依赖项并在开发模式下安装项目.然后,使用上面的命令行,他编译翻译binary(.mo)文件.

是否有一种简单且推荐的修改方法可以setup.py一步完成两个操作?或者我试图滥用setuptools

使用这样的脚本可用于开发目的:

#!/bin/sh
./setup.py compile_catalog
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

但是我想要一个解决方案,当使用通常的setup.py安装说明安装软件包时也能正常工作,就像从PyPi安装一样.

我是否应该理解setuptools不应该像这样使用,分发软件的人在创建档案时手动或使用自定义脚本编译翻译文件,而不是依赖于setup.py在安装时编译它们?

我在互联网上找不到很多帖子来解决这个问题.我找到的涉及pybabel从函数中运行命令行界面setup.py,这听起来很遗憾,因为它错过了setuptools集成的重点.

python setuptools babel

6
推荐指数
1
解决办法
626
查看次数

Setuptools不使用〜/ .pip / pip.conf global.index-url

我有一个本地pip镜像,所以我的主目录中有这个特定的pip配置:

[global]
index=file:///somewhere/python/pypi_mirror/simple
Run Code Online (Sandbox Code Playgroud)

当我这样做时pip install module,依赖项是从本地镜像正确获取的。

但是,当我使用命令行安装软件包时:

python setup.py install
Run Code Online (Sandbox Code Playgroud)

Python尝试从pip.org而不是从本地镜像获取依赖项。

为什么?

注意,该问题也出现在PIP_INDEX_URL

export PIP_INDES_URL=http://you_failure
python setup.py install
...
Searching for xmltodict
Reading https://pypi.python.org/simple/xmltodict/
...
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

python pip setuptools

6
推荐指数
1
解决办法
1392
查看次数

标签 统计

python ×10

setuptools ×10

distutils ×2

pip ×2

babel ×1

distribute ×1

egg ×1

f2py ×1

fortran ×1

numpy ×1

setup.py ×1