我刚刚创建了一个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
)
答案 0 :(得分:0)
在@NilsWerner的帮助下:
问题出在data_files
。我已使用package_data
(语法略有不同)更改了此内容:
package_data = {'goosempl/stylelib':[
'goosempl/stylelib/goose.mplstyle'
]},
这会产生所需的行为。
根据评论,还可以在MANIFEST.in
中包含这些文件。