簡體   English   中英

如何在安裝過程中安裝由PyPi插入的Ubuntu軟件包?

[英]How can I install Ubuntu packages insted of PyPi in setup?

我只是用setuptool制作了一個Python包,但是遇到一個問題,如果我從Ubuntu存儲庫中預裝了所有東西,它就可以正常工作,但是當我使用PyPi時,安裝會失敗,因為在PyPi上僅包含源代碼,並且必須已編譯,因此在安裝過程中會出現很多錯誤源。 在軟件包安裝過程中如何安裝Ubuntu軟件包? 我的想法是子流程 ,有沒有更好的方法?

已編輯

錯誤訊息

Reading http://pypi.python.org/simple/enable/
Reading http://code.enthought.com/projects/enable
Best match: enable 4.2.0
Downloading http://www.enthought.com/repo/ets/enable-4.2.0.tar.gz
Processing enable-4.2.0.tar.gz
Writing /tmp/easy_install-wuMg8s/enable-4.2.0/setup.cfg
Running enable-4.2.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-wuMg8s/enable-4.2.0/egg-dist-tmp-LbjqHY
/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:548: UserWarning: Specified path /usr/local/include/python2.7 is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:548: UserWarning: Specified path  is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
Warning: distutils distribution has been initialized, it may be too late to add a library freetype2_srcWarning: distutils distribution has been initialized, it may be too late to add a library agg24_srcWarning: distutils distribution has been initialized, it may be too late to add a library kiva_srcWarning: distutils distribution has been initialized, it may be too late to add an extension _agg/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:548: UserWarning: Specified path /usr/X11R6/lib is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:548: UserWarning: Specified path /usr/X11/lib is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:548: UserWarning: Specified path /usr/X11R6/include is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:548: UserWarning: Specified path /usr/X11/include is invalid.
  warnings.warn('Specified path %s is invalid.' % d)
error: X11 libraries not found.

設置腳本:

from setuptools import setup

setup( 
    name = 'SomeName',
    version = '0.1',
    packages = ['src'],
    author = 'Some Author',
    maintainer = 'Some',
    maintainer_email = 'some@email.com',
    description = '',
    url = 'www.some.com',
    install_requires = ['envisage >= 4.0',
                        'pyface >= 4.0',
                        'apptools >= 4.0',
                        'chaco >= 4.0',
                        'traits >= 4.0',
                        'traitsui >= 4.0',
                        'mysql-connector-python >= 1.0',
                        'pysnmp >= 4.2',
                        'pyasn1 >= 0.1.4',
                        'M2Crypto >= 0.21.1',
                        'netifaces >= 0.7'

                        ],
 )

從apt倉庫安裝的二進制文件已經使用所需的系統庫構建。 如果沒有,apt管理器將確保還安裝了所有系統庫。 使用setuptools(pip或easy_install)進行安裝只能獲取python要求。 而不是構建/系統要求。

在您的情況下,錯誤是error: X11 libraries not found. 這意味着X11的構建頭在您的系統中不可用。 解決此問題的一種簡單方法是告訴apt僅下載和安裝軟件包的依賴項(而不是軟件包本身)。 這樣可以確保當您使用pip或easy_install時,Python會找到所需的一切。

例如, psycopg2是Postgresql的Python庫。 要構建它,您需要Postgresql支持庫(標題和文件)。 PyPi無法提供這些功能。 debian軟件包python-psycopg2將正確安裝所有外部要求。 現在,如果要在虛擬環境中安裝psycopg2,我首先需要確保系統具有構建包的所有外部要求,因此我運行以下命令:

sudo apt-get build-dep python-pyscopg2

這將僅安裝依賴項(所有支持標頭),以便以后可以手動安裝。

就您而言,您應該運行apt-get build-dep python-enable ,它將獲取所需的所有信息:

# apt-get build-dep python-enable
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  cdbs libblas3gf libdrm-intel1 libdrm-radeon1 libdrm2 libfreetype6-dev
  libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx libglu1-mesa
  libglu1-mesa-dev liblapack3gf libpaper-utils libpaper1 libpthread-stubs0
  libpthread-stubs0-dev libx11-dev libxau-dev libxcb1-dev libxdamage1
  libxdmcp-dev libxfixes3 libxslt1.1 libxxf86vm1 mesa-common-dev
  python-chardet python-docutils python-lxml python-numpy python-pygments
  python-pyrex python-roman python-setupdocs python-sphinx swig x11-common
  x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev
0 upgraded, 40 newly installed, 0 to remove and 0 not upgraded.
Need to get 35.5 MB of archives.
After this operation, 97.3 MB of additional disk space will be used.

安裝完所有這些庫后,您的pypi軟件包將正確安裝。

PyPi僅適用於Python軟件包(以及這些軟件包的Python特定依賴項)。 對於任何外部要求; 您需要在安裝文檔中指定它們或在系統上提供它們,以便安裝過程成功。

嘗試使用此修改后的腳本:

from setuptools import setup

setup( 
    name = 'SomeName',
    version = '0.1',
    packages=find_packages(),
    author = 'Some Author',
    maintainer = 'Some',
    maintainer_email = 'some@email.com',
    description = '',
    url = 'www.some.com',
    install_requires = ['envisage',
                        'pyface',
                        'apptools',
                        'chaco',
                        'traits',
                        'traitsui',
                        'mysql-connector-python',
                        'pysnmp4',
                        'pyasn1',
                        'm2crypto',
                        'netifaces'

                        ],
 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM