2014-04-23 11 views
6

Tôi là một người mới đến PyPI ... vì vậy hãy để tôi đủ điều kiện với điều đó. Tôi đang cố gắng để đặt một gói trên PyPI nhưng có một chút rắc rối khi tôi cố gắng để cài đặt nó với pip. Khi tôi tải lên các tập tin để PyPI, tôi nhận được một cảnh báo (nhưng kịch bản setup.py kết thúc với không lỗi gây tử vong và một trạng thái 200):Tôi làm cách nào để bao gồm các tệp non-.py trong PyPI?

'my_package/static/my_folder' not a regular file -- skipping 

Và sau đó khi tôi đi để cài đặt nó trong pip, tôi nhận được một lỗi:

"error: can't copy 'my_package/static/my_folder': doesn't exist or not a regular file. 

Từ các câu trả lời khác trên SO, tôi đã thử thay đổi tệp MANIFEST.in và setup.py của mình, không có may mắn. Dưới đây là MANIFEST.in hiện tại của tôi:

recursive-include my_package *.css *.js *.jinja2 

và setup.py:

try: 
    from setuptools import setup, find_packages 
except ImportError: 
    from distutils.core import setup, find_packages 

setup(
    name='my_package', 
    packages=find_packages(), 
    include_package_data=True, 
    platforms='any', 
    version='1.0', 
    description='my_description', 
    license='MIT', 
    author='Me', 
    author_email='[email protected]', 
    install_requires=[ 
     'Flask', 
     'Jinja2', 
     'requests', 
    ], 
    url='http://www.example.com', 
    download_url='https://github.com/me/my_package/tarball/1.0', 
    classifiers=[ 
     'License :: OSI Approved :: MIT License', 
    ], 
) 

EDIT: Tôi cũng đã cố gắng rời khỏi file MANIFEST.in chỉ để xem có bị rối tung mọi thứ lên nhưng tôi nhận được kết quả tương tự.

+0

Chỉ cần xây dựng một dự án đơn giản với hai tệp ('my_package/__ init __. Py' và' my_package/static/a.css'), và 'setup.py' và' MANIFEST.in' của bạn hoạt động tốt. Bạn có các quy tắc bổ sung nào trong tệp kê khai của mình không? Sẽ rất tuyệt nếu bạn có thể cung cấp một dự án tối thiểu để tái tạo vấn đề. – uranusjr

+0

@uranusjr: Điều đó đã hiệu quả. Sau đó tôi đã xóa toàn bộ gói trên PyPI và gửi lại mà không có vấn đề gì. Phải có một cái gì đó trên đầu của PyPI. Vì bạn đã giải quyết vấn đề một cách hiệu quả, vui lòng đăng nhận xét của bạn làm câu trả lời và tôi sẽ chấp nhận nó. Cảm ơn! –

Trả lời

2

(Đăng lại từ những nhận xét theo yêu cầu.)

kịch bản cài đặt của bạn và MANIFEST.in nên làm việc. Để chứng minh điều này với một ví dụ nhỏ:

my_project/ 
    my_package/ 
     static/ 
      a.css 
     __init__.py 
    MANIFEST.in 
    setup.py 

Run python setup.py sdist và bạn sẽ thấy rằng cả hai static/a.css__init__.py được đóng gói trong gói tar.gz.

Các vấn đề liên quan