我知道我可以安装使用
$ pip install -e git+https://git.repo/some_pkg#egg=SomePackage
Run Code Online (Sandbox Code Playgroud)
但是 - 当我试图使用别人的包装时 - 我如何确定鸡蛋的名称是什么?
在命令行中运行大多数python脚本时获取以下类型的警告:
/Library/Python/2.6/site-packages/virtualenvwrapper/hook_loader.py:16: UserWarning: Module
pkg_resources was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.pyc, but /Library/Python/2.6/site-packages is being added to sys.path
import pkg_resources
/Library/Python/2.6/site-packages/virtualenvwrapper/hook_loader.py:16: UserWarning: Module site was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc, but /Library/Python/2.6/site-packages is being added to sys.path
import pkg_resources
Run Code Online (Sandbox Code Playgroud)
我认为这与使用distribute和virtualenv的组合有关,但是想要检查是否有其他人已经遇到过这个或者知道如何修复它.
我安装了python-pip包yum(使用Fedora的更新repo).它虽然没有添加pip脚本PATH.
$ which pip
/usr/bin/which: no pip in
(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:
/usr/bin:/usr/local/sbin:/usr/sbin:/sbin)
Run Code Online (Sandbox Code Playgroud)
但它确实创造了pip-python:
$ rpm -ql python-pip
/usr/bin/pip-python
[...snip...]
$ which pip-python
/usr/bin/pip-python
Run Code Online (Sandbox Code Playgroud)
我正在考虑建立pip一个符号链接,pip-python但有没有一个原因可执行文件的名称pip-python开头?
我正在编写一个可重用的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) 我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,它也没有出现在那里.
我正在试图弄清楚如何构建一个可以通过pip安装的Python源包.我尝试使用http://packages.python.org/an_example_pypi_project/setuptools.html上描述的setup.py文件 和指定目录中的一些简单测试文件创建一个测试项目.
创造这个项目命名为源压缩包后dist/an_example_pypi_project-0.0.4.tar.gz用python setup.py sdist,我试着在叫的virtualenv环境中安装它~/TEST用
~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz.虽然pip没有抛出任何错误,但它似乎没有安装包:
$ ~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz
Unpacking ./dist/an_example_pypi_project-0.0.4.tar.gz
Running setup.py egg_info for package from file:///home/lebedov/an_example_pypi_project/dist/an_example_pypi_project-0.0.4.tar.gz
Cleaning up...
$ find ~/TEST -name "an_example*"
$
Run Code Online (Sandbox Code Playgroud)
请注意,我可以使用easy_install从tarball安装:
$ ~/TEST/bin/easy_install dist/an_example_pypi_project-0.0.4.tar.gz
Processing an_example_pypi_project-0.0.4.tar.gz
Running an_example_pypi_project-0.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-tfXxeW/an_example_pypi_project-0.0.4/egg-dist-tmp-N2QY_N
warning: build_py: byte-compiling is disabled, skipping.
warning: install_lib: byte-compiling is disabled, skipping.
zip_safe flag not set; analyzing archive contents...
Adding an-example-pypi-project 0.0.4 to easy-install.pth file
Installed /home/lebedov/TEST/lib/python2.7/site-packages/an_example_pypi_project-0.0.4-py2.7.egg
Processing dependencies for …Run Code Online (Sandbox Code Playgroud) 我想将一些具有一些外部依赖性的python代码分发给只安装了核心python的机器(以及不熟悉的用户easy_install等).
我想知道是否可以将virtualenv用于此目的?我应该能够编写一些触发virtualenv的bash脚本(使用合适的软件包),然后运行我的代码..但这看起来有些混乱,我想知道我是否重新发明了这个轮子?
是否有任何简单的解决方案来分发具有依赖关系的python代码,理想情况下sudo在客户端机器上不需要?
TL; DR我需要一个模块,它会在后台自动更新我的脚本.
我有一个Python脚本,我分发给用户.我经常更新这个,然后让他们更新它(通过PIP).显然,对于只想使用应用程序而不考虑更新应用程序的用户来说,这不是一个高优先级.
我希望它可以自动更新我的应用,就像谷歌浏览器在后台默默地更新我的应用程序一样.是否有图书馆允许我这样做?如果没有,是否有一种直接的方式来使用PIP /分配模块来做到这一点?
作为项目设置过程的一部分,我需要将其中一个软件包符号链接到指定的目录,以便init.d脚本可以找到它.有没有办法将此作为后处理命令添加到setup()?我甚至愿意创建另一个创建链接的文件并将其setup()作为"运行这些"的一些kwarg列表的一部分传递(如果存在这样的选项).
setup(
...
packages = find_packages('src'),
package_dir = {'': 'src'},
install_requires = ...,
data_files = [('/etc/init.d', ['scripts/foo'])],
...
)
Run Code Online (Sandbox Code Playgroud)
该foo脚本期望其中一个包与src/其他地方的符号链接(例如,不是简单地打开PYTHONPATH).有没有办法实现这一目标?
我一直在尝试安装配置了以下设置的软件包:
setup(
packages=find_packages(),
include_package_data=True,
install_requires=[
'Django==1.5.1',
'xhtml2pdf',
],
dependency_links=[
'https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947#egg=xhtml2pdf',
],
)
Run Code Online (Sandbox Code Playgroud)
但是它会从PyPi安装XHTML2PDF包,而不是使用指定的链接.根据输出(我运行安装使用pip install -vvv package.tar.gz),它可能无法从链接解析版本(// 1在代码中),或者我没有指定正确的项目名称(// 2在代码中):
Downloading/unpacking xhtml2pdf (from mypackage==1.3)
Getting page https://pypi.python.org/simple/xhtml2pdf/
URLs to search for versions for xhtml2pdf (from mypackage==1.3):
* https://pypi.python.org/simple/xhtml2pdf/
* https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947#egg=xhtml2pdf
Getting page https://github.com/chrisglass/xhtml2pdf/zipball/28d12fcaafc4c47b13f1f6f42c2bfb73f90cc947
Analyzing links from page https://pypi.python.org/simple/xhtml2pdf/
Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.1.tar.gz#md5=9f83a2bcb67858aca9e058761f3bea7b (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.1
Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.2.tar.gz#md5=d640ccb9470942fd2e6d3ae740c27dc1 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.2
Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.1.zip#md5=4ad41c845735ae14da99085311d84c00 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.1
Found link https://pypi.python.org/packages/source/x/xhtml2pdf/xhtml2pdf-0.0.4.zip#md5=5f035cd6532bef99b7d35054caaa6ef7 (from https://pypi.python.org/simple/xhtml2pdf/), version: 0.0.4 …Run Code Online (Sandbox Code Playgroud) distribute ×10
python ×8
setuptools ×5
pip ×4
virtualenv ×4
django ×1
egg ×1
fedora ×1
installer ×1
symlink ×1
warnings ×1