簡體   English   中英

設置正確的python安裝腳本

[英]Setting proper python setup script

我在創建適當的python安裝腳本時遇到了很大的問題。 我的文件夾結構如下所示:

my_project/
    my_project/
        --__init__.py
        --file_1.py
        --file_2.py
        --file_3.py
    -AUTHORS
    -CHANGELOG
    -INSTALL
    -LICENSE
    -README.rst
    -setup.cfg
    -setup.py

我已經創建了一個安裝腳本,但是它的行為不像我想要的那樣。 設置腳本:

from ez_setup import use_setuptools
use_setuptools()
import os
import sys
from setuptools import setup, find_packages
readme_file = os.path.join(os.path.dirname(__file__), 'README.rst')
try:
    long_description = open(readme_file).read()
except IOError, err:
    sys.stderr.write("[ERROR] Cannot find file specified as ""``long_description`` (%s)\n" % readme_file)
    sys.exit(1)
setup(
    name = 'my_project',
    version='0.0.1',
    author = 'AUTHOR',
    author_email = 'CONTACT',
    url = 'http://example.com',
    description= 'Some description',
    long_description = long_description,
    packages = find_packages('my_project'),
    package_dir = {'':'my_project'},
        package_data = {'':['*.py']},
    include_package_data = True,
    scripts = [],
    requires = [],
    license = 'BSD License',
    install_requires = [
        'some_packages',
    ],
    classifiers = [
        'Development Status :: 2 - Pre-Alpha',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Topic :: Database',
        'Topic :: Internet',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ],
    keywords = 'python, setup, script, the best',
)

在這之后:

sudo python setup.py alias release register sdist bdist_egg upload
sudo python setup.py release

到目前為止,一切都很好,但是當我嘗試時:

sudo pip install my_project

我只進入/usr/local/lib/python2.7/dist-packages/一個名為my_project-0.0.1.egg-info /的文件夾,但是沒有my_project的init ,file_1,file_2,file_3 python文件。

我知道my_project-0.0.1.egg-info /是必需的,但是我的文件在哪里?

然后我嘗試了:

sudo python setup.py install

沒有任何作用,但是這次我得到了一個文件夾my_project-0.0.1-py2.7.egg。

我想進入/usr/local/lib/python2.7/dist-packages/兩個目錄:

- my_project-0.0.1.egg-info/
- my_project with my files

我的問題:

  1. 我究竟做錯了什么?
  2. 我該如何解決?
  3. 也許當我嘗試使用distutils代替setuptools時可以幫到我嗎?

您的問題在這一行:

package_dir = {'':'my_project'},

您告訴它my_project是查找頂級軟件包的地方。 因此, find_packages('my_project')將在my_project/my_project頂級目錄( my_project )中尋找一個包。 由於沒有這種東西,因此最終會得到一個空包。

只需刪除該行,一切都會正常。


在進行此操作時,您會使事情變得有些復雜。 您沒有使用ez_setup任何內容,因此刪除前兩行會更簡單。 而且您只添加了一個靜態包,因此實際上沒有理由使用find_packages 您可以只使用packages = ['my_project']


同時,這是將來如何調試內容的方法。

首先,在實際工作正常之前,請勿嘗試使用sudo python setup.py alias release register sdist bdist_egg upload 調試本地文件比已經上傳到PyPI的要容易得多。 只需執行python setup.py sdist ,然后您可以查看生成的tarball並確保它看起來確定,然后嘗試pip install . 和/或pip install dist/my_project-0.0.1.tar.gz以確保其確實有效。

其次, setup.py只是普通的Python代碼; 您可以隨時記錄事情以查看發生了什么。 例如,如果find_packages('my_project')似乎工作不正常,請嘗試在setup(…)之前執行print(find_packages('my_project')) setup(…)來查看其工作狀況。

暫無
暫無

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

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