pip尝试在错误的位置安装软件包

时间:2017-05-05 09:02:55

标签: python pip

我刚刚创建了一个Python包并将其上传到PyPi(goosempl)。在本地安装软件包有效:

$ python3 setup.py install

(它安装在usr/local/lib/python3.6/site-packages)。

然而,从PyPi安装它会产生一个奇怪的错误:

$ pip3 install goosempl

...
PermissionError: [Errno 13] Permission denied: '/usr/local/goosempl' 

由于某种原因pip试图安装在错误的位置?!?

这是setup.py(稍微剥离,它仍会导致错误):

import atexit
from setuptools import setup

__version__ = '0.1.0'

setup(
    name              = 'goosempl',
    version           = __version__,
    author            = 'Tom de Geus',
    author_email      = 'tom@geus.me',
    url               = 'https://github.com/tdegeus/GooseMPL',
    keywords          = 'matplotlib style',
    description       = 'Style and extension functions for matplotlib',
    long_description  = '',
    license           = 'MIT',
    install_requires  = ['matplotlib>=2.0.0'],
    packages          = ['goosempl'],
    data_files        = [('goosempl/stylelib',[
        'goosempl/stylelib/goose.mplstyle'
    ])],
)

我已经使用以下方式将其上传到PyPi:

$ python3 setup.py sdist
$ python3 setup.py bdist_wheel --universal
$ twine upload dist/*

(我的猜测是问题是由data_files

引起的

1 个答案:

答案 0 :(得分:0)

在@NilsWerner的帮助下:

问题出在data_files。我已使用package_data(语法略有不同)更改了此内容:

package_data = {'goosempl/stylelib':[
    'goosempl/stylelib/goose.mplstyle'
]}, 

这会产生所需的行为。

根据评论,还可以在MANIFEST.in中包含这些文件。