Tôi đang cố gắng tạo tập lệnh python qua PyInstaller. Tôi đã sử dụng các lệnh sau để cấu hình, tạo ra một file spec, và xây dựng:PyInstaller, tệp spec, ImportError: Không có mô đun nào có tên 'blah'
wget pyinstaller.zip, extracted it, python Configure.py, etc, then:
python pyinstaller/Makespec.py --onefile myscript.py
python pyinstaller/Build.py myscript.spec
Dưới đây là file spec nó tạo ra:
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'icinga.py'],
pathex=['/home/user/projects/icinga_python/releases/v2.1'])
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'myscript'),
debug=False,
strip=False,
upx=True,
console=1)
này được xây dựng một tập tin thực thi trong dist/
thư mục. Khi cố gắng để chạy tập tin này, tôi nhận được như sau:
Traceback (most recent call last):
File "<string>", line 12, in <module>
File "/home/user/projects/myscript/releases/v2.1/pyinstaller/iu.py", line 455, in importHook
raise ImportError, "No module named %s" % fqname
ImportError: No module named mysql
Nếu tôi chuyển thực thi này vào thư mục của mã Python thực tế, nó đã cho kết quả khác nhau:
Traceback (most recent call last):
File "<string>", line 12, in <module>
File "/home/user/projects/myscript/releases/v2.1/pyinstaller/iu.py", line 436, in importHook
mod = _self_doimport(nm, ctx, fqname)
File "/home/user/projects/myscript/releases/v2.1/pyinstaller/iu.py", line 521, in doimport
exec co in mod.__dict__
File "CLUSTER/mysql/icingasql.py", line 13, in <module>
import urllib2
File "/home/user/projects/myscript/releases/v2.1/pyinstaller/iu.py", line 455, in importHook
raise ImportError, "No module named %s" % fqname
ImportError: No module named urllib2
Trong ... pyinstaller docs Tôi thấy rằng --onefile
là tùy chọn tôi cần/muốn, nhưng vì một số lý do không phải mọi thứ đều được biên dịch.
Kịch bản không thực sự bao gồm bất kỳ thứ gì lạ mắt, chỉ mô-đun nhanh mà tôi đã viết cho câu lệnh sql và phân tích cú pháp nhất định trang mạng S.
Tôi nên cố gắng đặt tất cả các lib trên đường dẫn hoặc cuối cùng trên PYTHONPATH và ngừng di chuyển thư viện. – Louis
xin lỗi, làm gì? là trong tập tin spec? – Cmag
http://docs.python.org/tutorial/modules.html – Louis