启动python项目找不到路径_关于python:将py文件转换为exe,找不到现有的PyQt5插件目录...

我对phyton很陌生,刚刚完成了我的第一个应用程序。

现在,我正在尝试将.py文件编译为似乎无法正常工作的.exe购买。

我到处都在寻找解决方案,但我似乎找不到。

当我运行此命令时:pyinstaller gui.py

出现此错误:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

564815 INFO: Loading module hooks...

4815 INFO: Loading module hook"hook-encodings.py"...

4913 INFO: Loading module hook"hook-pydoc.py"...

4913 INFO: Loading module hook"hook-PyQt5.py"...

5019 WARNING: Hidden import"PyQt5.sip" not found!

5019 INFO: Loading module hook"hook-PyQt5.QtCore.py"...

5096 WARNING: Unable to find Qt5 translations C:/qt5b/qt_1524647842210/_h_env/Library/translations\qtbase_*.qm. These translations were not packaged.

5096 INFO: Loading module hook"hook-PyQt5.QtGui.py"...

Traceback (most recent call last):

File"c:\users\ivo\anaconda3\lib

unpy.py", line 193, in _run_module_as_main

"__main__", mod_spec)

File"c:\users\ivo\anaconda3\lib

unpy.py", line 85, in _run_code

exec(code, run_globals)

File"C:\Users\Ivo\Anaconda3\Scripts\pyinstaller.exe\__main__.py", line 9, in

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\__main__.py", line 111, in run

run_build(pyi_config, spec_file, **vars(args))

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build

PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 838, in main

build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 784, in build

exec(text, spec_namespace)

File"", line 17, in

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 241, in __init__

self.__postinit__()

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__

self.assemble()

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 500, in assemble

module_hook.post_graph()

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\imphook.py", line 410, in post_graph

self._load_hook_module()

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\imphook.py", line 377, in _load_hook_module

self.hook_module_name, self.hook_filename)

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\compat.py", line 736, in importlib_load_source

return mod_loader.load_module()

File"", line 399, in _check_name_wrapper

File"", line 823, in load_module

File"", line 682, in load_module

File"", line 265, in _load_module_shim

File"", line 684, in _load

File"", line 665, in _load_unlocked

File"", line 678, in exec_module

File"", line 219, in _call_with_frames_removed

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\hooks\hook-PyQt5.QtGui.py", line 11, in

hiddenimports, binaries, datas = add_qt5_dependencies(__file__)

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 514, in add_qt5_dependencies

more_binaries = qt_plugins_binaries(plugin, namespace=namespace)

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 132, in qt_plugins_binaries

pdir = qt_plugins_dir(namespace=namespace)

File"c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 117, in qt_plugins_dir

""".format(namespace,",".join(paths)))

Exception:

Cannot find existing PyQt5 plugin directories

Paths checked: C:/qt5b/qt_1524647842210/_h_env/Library/plugins

我的路径变量:

1

2

3

4C:\Users\Ivo\Anaconda3;C:\Users\Ivo\Anaconda3\Library\mingw-w64\bin;C:\Users\Ivo\Anaconda3\Library\usr\bin;C:\Users\Ivo\Anaconda3\Library\bin;C:\Users\Ivo\Anaconda3\Scripts;C:\Users\Ivo\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Ivo\AppData\Local\Programs\Python\Python36-32\;C:\Users\Ivo\AppData\Local\Microsoft\WindowsApps;C:\Users\Ivo\AppData

oaming\Composer\vendor\bin;C:\Users\Ivo\AppData\Local\atom\bin;C:\scrcpy-windows-v1.0\adb.exe;D:\xampp2\php;C:\Users\Ivo\AppData

oaming

pm;

如果有人能帮助我/指出正确的方向,我会整天整天解决这个问题。

编辑:

另外,由于我已经重新安装了一些东西来尝试解决此问题。 该文件将无法启动,并出现以下错误:

1

2

3

4Traceback (most recent call last):

File"C:\Users\Ivo\Documents\temp\project\gui.py", line 9, in

from PyQt5 import QtCore, QtGui, QtWidgets

ImportError: DLL load failed: The specified procedure could not be found.

康达4.5.11,

Python 3.6.4,

PyInstaller 3.4

在hooks / qt.py中错误地确定了插件路径。 Qt要求在任何其他调用之前先实例化QCoreApplication。

我的qt.py挂钩位于? anaconda3 Lib site-packages PyInstaller utils hooks qt.py中。

我这样编辑它:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28json_str = exec_statement("""

import sys

# exec_statement only captures stdout. If there are

# errors, capture them to stdout so they can be displayed to the

# user. Do this early, in case PyQt5 imports produce stderr

# output.

sys.stderr = sys.stdout

import json

from %s.QtCore import QLibraryInfo, QCoreApplication

# QLibraryInfo isn't always valid until a QCoreApplication is

# instantiated.

app = QCoreApplication([])

paths = [x for x in dir(QLibraryInfo) if x.endswith('Path')]

location = {x: QLibraryInfo.location(getattr(QLibraryInfo, x))

for x in paths}

try:

version = QLibraryInfo.version().segments()

except AttributeError:

version = None

print(str(json.dumps({

'isDebugBuild': QLibraryInfo.isDebugBuild(),

'version': version,

'location': location,

})))

""" % self.namespace)

见1。

太棒了,此代码有效!非常感谢!

如何在不从conda环境中编辑钩子的情况下做到这一点?通过更新qt之类的东西? .py文件本身让我感到非常不舒服

我距离专家还很远,但是我找不到其他方法可以使它工作。

我正在将Python 3.6.3与ANACONDA3和Spyder用作IDE。 Pyinstaller 3.4。

尝试使用Pyinstaller生成exe文件时,出现两种错误:

" AttributeError:'str'对象没有属性'items'"。这是由解决

使用以下命令更新Python脚本中导入的每个模块:

pip install --upgrade

"找不到现有的PyQt5插件目录":这是下一个错误。如

于聪在之前的文章中提到过,我通过运行来解决此问题

点安装PyQt5

不要忘记也将setuptools升级到最新版本

该过程提供了一个我尚未测试过的exe文件。

但是至少,我成功地将Pyinstaller推到了尽头,没有出错。

希望这会有所帮助

顺便说一句,新年快乐:)

编辑:

我已经测试了py2exe生成的独立.exe

该程序正在运行,并且没有错误地结束。

但是问题在于xlsx不再运行,因为没有Excel

文件已创建。这些文件基于pandas数据框。

我的提示是熊猫程序模块,它是程序的主要核心,

似乎被改变了。我注意到所使用的数据帧被截断了,

通过在Spyder的Ipython控制台中编辑的控制线。

我认为我最好的选择是重新安装Anaconda3。

因此请小心,升级所需程序中使用的模块

与py2exe独立运行。似乎升级熊猫模块是一个

错误。

很抱歉,如果我在主要帖子中给出了错误的建议,但是升级是

运行py2exe的最佳方法。升级熊猫时要小心。

请尝试以下异常中的修复程序:使用Pyinstaller时找不到PyQt5插件目录,尽管甚至没有使用PyQt5。简而言之:

pip intall PyQt5

请注意,奇怪的是,conda install PyQt5可能无法解决问题。

我遇到了同样的问题,并看到了另一个建议:创建丢失的目录(在您的情况下为C:/ qt5b / qt_1524647842210 / _h_env / Library / plugins),然后复制两个文件pyqt5.dll和pyqt5qmlplugin.dll(大概在c:中的某个位置)用户[名称] AppData Local conda conda envs)到目录。

我没有尝试过,因为我修复了pip install PyQt5的问题。您可能需要尝试一下。

该奇怪的子目录名称从何而来? (在您的情况下,其C:qt5bqt_1524647842210_h_envLibraryplugins)?这个问题并不直接针对您,而是针对任何阅读此问题的人。我得到了一个完全不同的目录,但是"创建怪异目录"解决方案也对我有用(不仅仅是安装)

由于该异常被投诉:异常:找不到现有的PyQt5插件目录检查的路径:C:/ qt5b / qt_1524647842210 / _h_env / Library / plugins

@ cong you-我的评论应该更加清楚。这不是给你的。我在问是否其他人知道您的消息中的目录为什么与我的目录不同,即使它的消息基本相同。 pyinstaller如何创建该目录名,因为您的目录名与我的不同,并且在我的系统中都不存在。

我安装了最新版本的PyInstaller,然后解决了"Cannot find existing PyQt5 plugin directories"的此异常。

您可以通过以下命令安装最新版本的PyInstaller:

1pip install https://github.com/pyinstaller/pyinstaller/tarball/develop

P.S: Some information about my setup:

1

2

3

4

5

6

7

8

9

10

11$conda info

conda version : 4.6.14

conda-build version : 3.17.8

python version : 3.7.3.final.0

platform : win-64

user-agent : conda/4.6.14 requests/2.21.0 CPython/3.7.3 Windows/10 Windows/10.0.17763

$ pip show pyinstaller

Name: PyInstaller

Version: 3.5.dev0+d74052489

Summary: PyInstaller bundles a Python application and all its dependencies into a single package.

尝试卸载Anaconda。过去有过问题。如果没有,您也可以尝试相当不错的py2exe。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将b.py文件中的tqdm的进度同步到a.py文件PyQt5的QProgressBar中,可以使用以下步骤: 1. 在a.py文件中创建一个窗口类,并在其中包含一个QProgressBar对象。 2. 在b.py文件中,定义一个函数,该函数包含一个tqdm循环。在循环中,使用一个回调函数来更新进度条的值。 3. 在a.py文件中,使用subprocess模块来调用b.py文件,并将回调函数作为命令行参数传递给b.py文件。 以下是一个示例代码,可以将b.py文件中的tqdm的进度同步到a.py文件PyQt5的QProgressBar中: a.py文件: ```python from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar import sys import subprocess class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.progress_bar = QProgressBar(self) self.progress_bar.setGeometry(30, 40, 200, 25) self.show() def set_value(self, value): self.progress_bar.setValue(value) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() cmd = ['python', 'b.py', str(window.set_value)] process = subprocess.Popen(cmd) app.exec_() ``` 在a.py文件中,我们首先创建了一个MainWindow类,该类包含一个QProgressBar对象。我们还定义了set_value()方法,以便在每次迭代时更新进度条的值。 在if __name__ == '__main__':语句中,我们使用subprocess模块来调用b.py文件。在cmd列表中,我们将回调函数作为命令行参数传递给b.py文件。 b.py文件: ```python from tqdm import tqdm import sys def update_progress(value): progress_callback = eval(value) for i in tqdm(range(100), desc='Processing', unit='iterations', leave=False, dynamic_ncols=True, file=None, ncols=80, mininterval=0.1, maxinterval=10.0, miniters=None, ascii=None, disable=False, unit_scale=None, unit_divisor=None, gui=False, position=None, postfix=None, initial=None, bar_format=None, smoothing=0.3, bar_update_interval=1): progress_callback(i) if __name__ == '__main__': update_progress(sys.argv[1]) ``` 在b.py文件中,我们定义了update_progress()函数,该函数包含了一个tqdm循环。在循环中,我们使用回调函数来更新进度条的值。 如果我们将a.py和b.py文件保存在同一个文件夹中,那么当我们运行a.py文件时,它将会调用b.py文件,并将回调函数作为命令行参数传递给b.py文件。在b.py文件中,我们将回调函数作为字符串进行了解析,并在循环中使用该函数来更新进度条的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值