2017-05-05 70 views
1

我剛剛創建了一個Python軟件包並將其上載到PyPi(goosempl)。在本地安裝包裝工程:pip嘗試在錯誤的位置安裝軟件包

$ 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  = '[email protected]', 
    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

你在virtualenv裏面嗎? –

+0

@NilsWerner不,我不是。 (此外,我在Mac上使用自制Python) –

+0

這可能是'data_files'是罪魁禍首,('goosempl/stylelib'沒有擴展到'/usr/local/lib/python3.6/site -packages/goosempl/stylelib',但是'/ usr/lib/goosempl/stylelib')。嘗試刪除這些行,而是創建一個'MANIFEST.in'文件,其中只包含'goosempl/stylelib/goose.mplstyle'這一行。 –

回答

0

在@NilsWerner的幫助下:

問題出在data_files。我曾與package_data(其中有一個稍微不同的語法)改變了這個:

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

這導致所需的行爲。

繼評論之後,還可以在MANIFEST.in中包含這些文件。

相關問題