2009-11-19 37 views
5

Tôi có bản phân phối trứng của ứng dụng PyQt mà tôi tự xây dựng và chứa tài liệu sinh ra nhân sư. Khi tôi gọi tệp trợ giúp từ ứng dụng, nó sẽ mở index.html sphinx trong cửa sổ QtWebKit.QWebView. Rõ ràng, chỉ có tệp index.html được trích xuất từ ​​trứng vào thư mục trứng của hệ điều hành (ví dụ: [..] \ Application Data \ Python-Eggs \ trong Windows).buộc giải nén một số thư mục trứng nhất định

Kết quả này bị hỏng css, hình ảnh bị hỏng và liên kết bị hỏng vì các tệp khác này dường như không được giải nén; chúng có mặt trong tập tin trứng, nhưng không có trong thư mục trứng.

Tôi có thiếu gì đó ở đây không? Có cách nào để lực lượng giải nén tất cả html, css, tập tin hình ảnh ngay lập tức?

Trả lời

4

Tôi thấy rằng bạn đã tìm thấy một cách để làm điều đó, nhưng để tham khảo trong tương lai, đây là cách không khắc phục sự cố để thực hiện điều đó omatically, từ tài liệu tại http://peak.telecommunity.com/DevCenter/setuptools#automatic-resource-extraction [nhấn mạnh thêm]:

Nếu bạn đang sử dụng các công cụ mà mong đợi tài nguyên của mình là "thực" tác phẩm, hoặc dự án của bạn bao gồm phi mở rộng thư viện nguồn gốc hoặc các tập tin khác mà phần mở rộng C mong đợi để có thể truy cập, bạn có thể cần phải liệt kê các tập tin trong đối số eager_resources để setup(), để các tập tin sẽ được trích xuất cùng

vì vậy, trong trường hợp này, những gì bạn muốn làm có:

eager_resources=['doc/sphinx/build/html', 'doc/sphinx/build/html/index.html'] 

trong thiết lập của bạn.py, điều này sẽ khiến thư mục 'html' được trích xuất đệ quy khi bạn yêu cầu index.html (giả sử rằng 'doc' trong ví dụ của bạn là gói cấp cao nhất).

(Bạn có thể tìm hiểu thêm về các từ khóa eager_resources trong các tài liệu tại http://peak.telecommunity.com/DevCenter/setuptools#new-and-changed-setup-keywords)

+0

cảm ơn rất nhiều vì thông tin chi tiết! –

1

Nguyên nhân có thể xảy ra: không phải tất cả các tệp đều được đưa vào trứng ngay từ đầu.

  • Kiểm tra điều này bằng cách giải nén .egg (bạn có thể cần đổi tên tệp thành tệp .zip cho điều đó trên cửa sổ). Kiểm tra xem tất cả nội dung có ở đó không.

  • Xem cách bạn tạo ra quả trứng. Bạn có sử dụng tệp MANIFEST.in để cho trình thiết lập biết tệp nào cần bao gồm không? Nếu không, bạn có thể tin tưởng vào việc bao gồm các tệp lật đổ tự động của setuptools. Tất cả các tập tin subversion'ed tự động kết thúc trong trứng, tập tin python làm, phần còn lại thì không.

  • Tài liệu nhân sư có thể được tạo, vì vậy tài liệu không bị lật đổ, do đó nó không được bao gồm tự động.

Hai giải pháp:

  • Sử dụng một file MANIFEST.in phải tự xác định (ký tự đại diện làm việc) tất cả các file mà nên được bao gồm. Không an toàn miễn là bạn đã hoàn thành.

  • Hoặc xác định các tập tin html như package_data, How does setuptools decide which files to keep for sdist/bdist?

+0

cảm ơn cho câu trả lời, nhưng như tôi đã đề cập:" ..., vì những tập tin khác dường như không được giải nén; chúng có mặt trong tập tin trứng, nhưng không có trong danh mục trứng. " Chỉ index.html nằm trong thư mục này, không có gì khác (ví dụ: css, html khác) –

2
def get_help_url(self): 
    from pkg_resources import resource_filename 
    from doc import sphinx 
    import os 
    from PyQt4.QtCore import QUrl 
    html_path = resource_filename(sphinx.__name__, os.path.join('build', 'html')) 

    return QUrl(os.path.join(html_path, 'index.html')) 

thay vì

html = resource_filename(sphinx.__name__, os.path.join('build', 'html', 'index.html')) 

    return QUrl(html) 

đã làm các trick thấy

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