Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何避免使用pip安装tarball时出现文件未找到错误?_Python_Pip_Setuptools - Fatal编程技术网

Python 如何避免使用pip安装tarball时出现文件未找到错误?

Python 如何避免使用pip安装tarball时出现文件未找到错误?,python,pip,setuptools,Python,Pip,Setuptools,我正在构建一个本地python包 cd <source dir> python ./setup.py sdist cd python./setup.py sdist 当我尝试用pip安装它时,它试图删除一个不存在的文件,但失败了 pip install --verbose dist/pl_zenoss_handler-0.1.1.tar.gz Unpacking ./dist/pl_zenoss_handler-0.1.1.tar.gz Running setup.py (p

我正在构建一个本地python包

cd <source dir>
python ./setup.py sdist
cd
python./setup.py sdist
当我尝试用pip安装它时,它试图删除一个不存在的文件,但失败了

pip install --verbose dist/pl_zenoss_handler-0.1.1.tar.gz
Unpacking ./dist/pl_zenoss_handler-0.1.1.tar.gz
  Running setup.py (path:/tmp/pip-QohNov-build/setup.py) egg_info for package from file:///Users/travis.bear/p4/depot/service/python/_pl_zenoss_handler/dist/pl_zenoss_handler-0.1.1.tar.gz
    running egg_info
    creating pip-egg-info/pl_zenoss_handler.egg-info
    writing pip-egg-info/pl_zenoss_handler.egg-info/PKG-INFO
    writing top-level names to pip-egg-info/pl_zenoss_handler.egg-info/top_level.txt

<... much output deleted for brevity ... >

creating build/scripts-2.7

error: file '/private/tmp/pip-QohNov-build/bin/zen_handler' does not exist

----------------------------------------
Cleaning up...
Command /Users/travis.bear/venv/zenoss/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-QohNov-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-uIoyIG-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/travis.bear/venv/zenoss/include/site/python2.7 failed with error code 1 in /tmp/pip-QohNov-build
Exception information:
Traceback (most recent call last):
  File "/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/commands/install.py", line 279, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/req.py", line 1380, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/req.py", line 699, in install
    cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
  File "/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/util.py", line 697, in call_subprocess
    % (command_desc, proc.returncode, cwd))
InstallationError: Command /Users/travis.bear/venv/zenoss/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-QohNov-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-uIoyIG-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/travis.bear/venv/zenoss/include/site/python2.7 failed with error code 1 in /tmp/pip-QohNov-build

Storing debug log for failure in /Users/travis.bear/.pip/pip.log
pip安装--verbose dist/pl\u zenoss\u handler-0.1.1.tar.gz
解包。/dist/pl_zenoss_handler-0.1.1.tar.gz
为来自的包运行setup.py(路径:/tmp/pip QohNov build/setup.py)egg\u信息file:///Users/travis.bear/p4/depot/service/python/_pl_zenoss_handler/dist/pl_zenoss_handler-0.1.1.tar.gz
运行蛋_信息
正在创建pip egg info/pl_zenoss_handler.egg-info
编写pip egg info/pl_zenoss_handler.egg-info/PKG-info
将顶级名称写入pip egg info/pl_zenoss_handler.egg-info/top_level.txt
创建构建/脚本-2.7
错误:文件“/private/tmp/pip QohNov build/bin/zen_handler”不存在
----------------------------------------
清理。。。
Command/Users/travis.bear/venv/zenoss/bin/python-c“导入setuptools,tokenize;_u文件u='/tmp/pip QohNov build/setup.py';exec(compile(getattr(tokenize,'open',open)(_u文件_u).read().replace('\r\n','\n'),u文件u,'exec'))”install--record/tmp/pip-uIoyIG-record/install-record.txt--single version外部管理--compile--install headers/Users/travis.bear/venv/zenoss/include/site/python2.7在/tmp/pip-QohNov build中失败,错误代码为1
例外信息:
回溯(最近一次呼叫最后一次):
文件“/Users/travis.bear/venv/zenoss/lib/python2.7/site packages/pip/basecommand.py”,第122行,在main中
status=self.run(选项、参数)
文件“/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/commands/install.py”,第279行,正在运行
需求设置.install(安装选项,全局选项,root=options.root路径)
文件“/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/req.py”,第1380行,安装中
要求.安装(安装选项、全局选项、*args、**kwargs)
文件“/Users/travis.bear/venv/zenoss/lib/python2.7/site-packages/pip/req.py”,第699行,在安装中
cwd=self.source\u dir,filter\u stdout=self.\u filter\u install,show\u stdout=False)
call_子流程中的文件“/Users/travis.bear/venv/zenoss/lib/python2.7/site packages/pip/util.py”,第697行
%(命令描述,过程返回代码,cwd))
安装错误:Command/Users/travis.bear/venv/zenoss/bin/python-c“导入setuptools,tokenize;_u文件_u='/tmp/pip QohNov build/setup.py';exec(编译(getattr(tokenize,'open',open)(u文件uu).read().replace('\r\n','n'),u文件uu,'exec'))”install--record/tmp/pip-uIoyIG-record/install-record.txt--single version外部管理--compile--install headers/Users/travis.bear/venv/zenoss/include/site/python2.7在/tmp/pip-QohNov build中失败,错误代码为1
在/Users/travis.bear/.pip/pip.log中存储故障调试日志
以下是setup.py文件:

from setuptools import setup

readme = open('README.rst').read()
history = open('HISTORY.rst').read().replace('.. :changelog:', '')

setup(
    name='pl_zenoss_handler',
    version='0.1.1',
    description='Sensu handler for Zenoss',
    long_description=readme + '\n\n' + history,
    author='Travis Bear',
    author_email='<snip>',
    url='<snip>',
    packages=[
        'zen_handler',
    ],
    scripts=['bin/zen_handler'],
    install_requires=[
    ],
    license="BSD",
    keywords='zenoss sensu'
)
从设置工具导入设置
readme=open('readme.rst')。read()
history=open('history.rst').read().replace('..:changelog:','')
设置(
name='pl\u zenoss\u handler',
version='0.1.1',
description='Zenoss的Sensu处理程序',
long_description=readme+'\n\n'+历史记录,
作者:特拉维斯·贝尔,
作者_电子邮件=“”,
url=“”,
包裹=[
“zen_handler”,
],
脚本=['bin/zen_handler'],
安装所需的=[
],
license=“BSD”,
关键词='zenoss sensu'
)
问题:
bin/zen\u handler
分发包中缺少文件 问题是,您的
setup.py
请求使用
bin/zen\u handler
中的文件,而在您的分发gz文件中,它丢失了

进展如何?
  • 在源代码树中有
    bin/zen\u处理程序
  • 您的
    setup.py
    定义了创建分发包的条件
  • 您可以创建分发标签
  • 您可以使用分发包安装程序
  • 分发包不包含bin/zen_处理程序,因此失败
  • 如果
    gz
    文件包含
    bin/zen\u处理程序,则应进行检查。我假设它不存在

    原因是,由于它不是python包
    zen_handler
    本身的一部分,所以它没有打包到发行版中

    决议 将此非python文件声明为发行版的一部分 找到setup.py的选项,它甚至会将
    bin/zen\u处理程序
    声明为分发包的一部分。这可能意味着编辑
    MANIFEST.in
    文件(在其中添加该文件)和/或使用参数
    include\u package\u data

    (首选)使用
    入口点安装脚本
    如中所述,使用
    入口点,而不是使用paremater
    脚本
    。由于这是使用纯包python源代码,因此不需要外部存在文件


    我推荐这种解决方案,尽管它只需要对代码进行很少的修改。

    不确定为什么会发生这种情况,但您是否尝试过将不存在的文件作为一种解决方法?就是这样。非常感谢。