Một trong các mô-đun cho ứng dụng của tôi sử dụng các hàm từ tệp .pyd. Có một tùy chọn để loại trừ dlls (exclude_dlls) nhưng có một tùy chọn để bao gồm chúng không? Quá trình xây dựng dường như không sao chép tệp .pyd trong mô-đun của tôi mặc dù sao chép phần còn lại của tệp (.py). Tôi cũng cần bao gồm một .dll. Làm cách nào để lấy py2exe để bao gồm cả tệp .pyd và .dll?Bao gồm PYDs/DLLs trong py2exe builds
Trả lời
Nếu chúng không được phát hiện tự động, hãy thử sao chép thủ công chúng vào thư mục xây dựng tạm thời của py2exe. Họ sẽ được bao gồm trong thực thi cuối cùng.
Bạn có thể thay đổi kịch bản thiết lập để sao chép các tập tin một cách rõ ràng:
script = "PyInvaders.py" #name of starting .PY
project_name = os.path.splitext(os.path.split(script)[1])[0]
setup(name=project_name, scripts=[script]) #this installs the program
#also need to hand copy the extra files here
def installfile(name):
dst = os.path.join('dist', project_name)
print 'copying', name, '->', dst
if os.path.isdir(name):
dst = os.path.join(dst, name)
if os.path.isdir(dst):
shutil.rmtree(dst)
shutil.copytree(name, dst)
elif os.path.isfile(name):
shutil.copy(name, dst)
else:
print 'Warning, %s not found' % name
pygamedir = os.path.split(pygame.base.__file__)[0]
installfile(os.path.join(pygamedir, pygame.font.get_default_font()))
installfile(os.path.join(pygamedir, 'pygame_icon.bmp'))
for data in extra_data:
installfile(data)
vv ... sửa đổi cho phù hợp với nhu cầu của bạn, tất nhiên.
Có lẽ bạn có thể sử dụng tùy chọn data_files để setup():
import glob
setup(name='MyApp',
# other options,
data_files=[('.', glob.glob('*.dll')),
('.', glob.glob('*.pyd'))],
)
data_files phải là một danh sách các hàng, trong đó mỗi tuple chứa:
- Các thư mục đích.
- Danh sách các tệp cần sao chép.
Điều này sẽ không đưa tệp vào library.zip, đây không phải là vấn đề đối với dll, nhưng tôi không biết về tệp pyd.
.pyd và .DLL khác ở đây, trong đó .pyd phải được tự động tìm thấy bởi mô-đun và bao gồm (miễn là bạn có tuyên bố "nhập" thích hợp) mà không cần phải làm gì cả. Nếu một trong những bị mất, bạn làm điều tương tự như nếu một tập tin .py đã bị mất (cả hai đều chỉ là mô-đun): sử dụng "bao gồm" tùy chọn cho các tùy chọn py2exe.
Kính ngắm sẽ không nhất thiết phải tìm phụ thuộc vào .DLLs (py2exe có thể phát hiện một số), vì vậy bạn có thể cần bao gồm rõ ràng những điều này, với tùy chọn 'data_files'.
Ví dụ, nơi bạn có hai .DLL's ('foo.dll' và 'bar.dll') để bao gồm, và ba .pyd's ('module1.pyd', 'module2.pyd' và 'module3. pyd ') để bao gồm:
setup(name='App',
# other options,
data_files=[('.', 'foo.dll'), ('.', 'bar.dll')],
options = {"py2exe" : {"includes" : "module1,module2,module3"}}
)
Trong phiên bản hiện tại của py2exe, data_files sẽ trông giống như vậy: data_files = [(DIR, [FILE, FILE, FILE]), ...] –
Khi tôi làm điều này, tôi cần sử dụng "include" thay vì "include "hoặc py2exe than phiền. – talljosh
Tôi có cùng một vấn đề với việc tìm kiếm tệp pyd và tôi đã thử bao gồm tài nguyên bị thiếu nhưng py2exe vẫn không thể tìm thấy nó. –
- 1. py2exe "bao gồm" mô-đun: khi nào chúng nên được quản lý theo cách thủ công?
- 2. Visual Studio Builds mỗi ngày
- 3. Bao gồm tăng trong xcode
- 4. Bao gồm jQuery, nếu không bao gồm đã
- 5. Phía máy khách bao gồm phía máy chủ bao gồm?
- 6. Bao gồm các file JS trong một file xhtml được bao gồm sử dụng ui: bao gồm
- 7. Cách cài đặt modul py2exe trong Linux
- 8. Bao gồm trong tập tin tiêu đề vs forward-kê khai, bao gồm trong cpp
- 9. DatePicker bao gồm Năm
- 10. Tổ chức bao gồm
- 11. PHP auto bao gồm
- 12. Bao gồm API slf4j
- 13. PHP bao gồm
- 14. Bao gồm tệp .cpp?
- 15. Bao nhiêu PHP bao gồm quá nhiều?
- 16. PHP bao gồm bên trong một bao gồm (thư mục khác nhau)
- 17. Lồng nhau ROR: bao gồm để bao gồm các tài nguyên phụ trong to_xml/to_json
- 18. Bao gồm tệp .js trong tệp .js
- 19. Tạo tên tệp bao gồm trong macro
- 20. Bao gồm một lớp trong SCSS
- 21. Sử dụng biến trong Jade bao gồm
- 22. Bao gồm WinDbg trong danh sách vsjitdebugger
- 23. bao gồm tệp từ xa trong PHP
- 24. Bao gồm tệp lô trong tệp lô
- 25. Lỗi bao gồm hình ảnh trong Latex
- 26. Bao gồm glib.h trong dự án CMake
- 27. Trình tự javascript bao gồm trong Orchard
- 28. PHP bao gồm tệp trong foreach Loop
- 29. cách bao gồm javax.jms. * Trong nhật thực?
- 30. Bao gồm docstring trong Tài liệu Sphinx
Có, nhưng lý tưởng là một phần của tập lệnh setup.py hoặc đặt trong tập lệnh batch của tôi để tạo tệp thực thi. – TheObserver