PyStand icon indicating copy to clipboard operation
PyStand copied to clipboard

将代码使用egg加密后 如何才能正确的读取egg文件内的文件

Open David-Xian66 opened this issue 3 years ago • 6 comments

在我的项目中 打包时候出现了错误 下面这行代码报错:

file = os.path.join("UI","Custom_UI","QToolTip.qss")
with open(file,'r') as f:
    self.setStyleSheet(f.read())

这里的qss文件是一个需要被读取的文件 用来设置UI样式

压缩成egg后 运行报错:

C:\Users\xyj\Desktop\3.0.0-alpha>Traceback (most recent call last):
Traceback (most recent call last):
  File "<string>", line 34, in <module>
  File "C:\Users\xyj\Desktop\3.0.0-alpha\MOS.int", line 13, in <module>
    Run()
  File "C:\Users\xyj\Desktop\3.0.0-alpha\script\Code\MainWindow.py", line 544, in Run
    ui = RunUi()
  File "C:\Users\xyj\Desktop\3.0.0-alpha\script\Code\MainWindow.py", line 58, in __init__
    self.__init__setToolTipDuration()
  File "C:\Users\xyj\Desktop\3.0.0-alpha\script\Code\MainWindow.py", line 498, in __init__setToolTipDuration
    self._toolTip = ToolTip(parent=self)
  File "C:\Users\xyj\Desktop\3.0.0-alpha\script\UI\Custom_UI\QToolTip.py", line 44, in __init__
    self.__setQss()
  File "C:\Users\xyj\Desktop\3.0.0-alpha\script\UI\Custom_UI\QToolTip.py", line 66, in __setQss
    with open(file,'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'UI\\Custom_UI\\QToolTip.qss'

之后我只好更改了代码 将需要被读取的内容改成一个py文件 并且内建一个函数 调用之后 就返回这个文件的内容 虽然这么可以解决这个问题 但是我并不想这么解决 (因为这个方法很不好 而且以后想快速的改这个qss列表 也很麻烦

改正前: https://github.com/xianyongjian080402/Minecraft-Optimal-Starter_3/tree/b068e9e212fe5cf668a50d4c83523f7510749c5f

改正后: https://github.com/xianyongjian080402/Minecraft-Optimal-Starter_3/tree/8629cf3f5d694ca0ba9eb55a28e1c94776f8b735

David-Xian66 avatar Oct 21 '22 18:10 David-Xian66

你加密代码就行了啊,因为加密资源很麻烦,加载代码就 python 一处。 但资源太多处了,不同的资源,不同的加载接口,你都要自己弄。

qss 这种,不太重要的,直接放在 PyStand 的目录里用就得了。

skywind3000 avatar Oct 21 '22 19:10 skywind3000

你加密代码就行了啊,因为加密资源很麻烦,加载代码就 python 一处。 但资源太多处了,不同的资源,不同的加载接口,你都要自己弄。

qss 这种,不太重要的,直接放在 PyStand 的目录里用就得了。

好的 我昨天打开这个issue之后还发现了个问题 当我把“script”这个文件删除之后 int里面的from Code.MainWindow import Run就开始报错找不到模块

int文件内容:

# coding=utf-8
"""主文件"""

import sys, os
os.chdir(os.path.dirname(__file__))
sys.path.append(os.path.abspath('script'))
#sys.path.append(os.path.abspath('script.egg'))


from Code.MainWindow import Run

if __name__ == '__main__':
    Run()

egg的文件名也没有写错 我还试着把sys.path.append(os.path.abspath('script'))这行注释掉 可是还是没用

David-Xian66 avatar Oct 22 '22 02:10 David-Xian66

你加密代码就行了啊,因为加密资源很麻烦,加载代码就 python 一处。 但资源太多处了,不同的资源,不同的加载接口,你都要自己弄。 qss 这种,不太重要的,直接放在 PyStand 的目录里用就得了。

好的 我昨天打开这个issue之后还发现了个问题 当我把“script”这个文件删除之后 int里面的from Code.MainWindow import Run就开始报错找不到模块

int文件内容:

# coding=utf-8
"""主文件"""

import sys, os
os.chdir(os.path.dirname(__file__))
sys.path.append(os.path.abspath('script'))
#sys.path.append(os.path.abspath('script.egg'))


from Code.MainWindow import Run

if __name__ == '__main__':
    Run()

egg的文件名也没有写错 我还试着把sys.path.append(os.path.abspath('script'))这行注释掉 可是还是没用

你解决了吗 我也是这种情况 No module named 'script'

Ephemeralwanning avatar Jan 20 '23 12:01 Ephemeralwanning

你加密代码就行了啊,因为加密资源很麻烦,加载代码就 python 一处。 但资源太多处了,不同的资源,不同的加载接口,你都要自己弄。 qss 这种,不太重要的,直接放在 PyStand 的目录里用就得了。

好的 我昨天打开这个issue之后还发现了个问题 当我把“script”这个文件删除之后 int里面的from Code.MainWindow import Run就开始报错找不到模块 int文件内容:

# coding=utf-8
"""主文件"""

import sys, os
os.chdir(os.path.dirname(__file__))
sys.path.append(os.path.abspath('script'))
#sys.path.append(os.path.abspath('script.egg'))


from Code.MainWindow import Run

if __name__ == '__main__':
    Run()

egg的文件名也没有写错 我还试着把sys.path.append(os.path.abspath('script'))这行注释掉 可是还是没用

你解决了吗 我也是这种情况 No module named 'script'

呃没呢,我需要研究一下,最近比较忙,过段时间再说

David-Xian66 avatar Jan 26 '23 05:01 David-Xian66

不是项目的问题,是我的问题

David-Xian66 avatar Jan 26 '23 05:01 David-Xian66

我也有这样的问题,将script的代码压缩为zip后改后缀为egg,但是识别不出来任何py文件。如何解决

zty1122zty avatar Dec 20 '23 07:12 zty1122zty