鱼C论坛

 找回密码
 立即注册
查看: 1956|回复: 10

打包exe后闪退问题?小白求助

[复制链接]
发表于 2021-8-4 23:15:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
D:\new>pyinstaller -F fuli.py
58 INFO: PyInstaller: 4.5
59 INFO: Python: 3.6.5
59 INFO: Platform: Windows-10-10.0.18362-SP0
60 INFO: wrote D:\new\fuli.spec
63 INFO: UPX is not available.
64 INFO: Extending PYTHONPATH with paths



D:\new\dist>fuli.exe
Traceback (most recent call last):
  File "fuli.py", line 3, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "parsel\__init__.py", line 10, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "parsel\selector.py", line 8, in <module>
  File "src\lxml\etree.pyx", line 74, in init lxml.etree
ImportError: cannot import name _elementpath
[8932] Failed to execute script 'fuli' due to unhandled exception!

求解惑!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-4 23:24:04 | 显示全部楼层
from fake_useragent import UserAgent
import requests
import parsel
import os
import random
import re

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 09:06:10 | 显示全部楼层
闪退的原因:
1. 文件调用问题,指你调用了某些媒体文件,比如图片或者音乐,你只需要把打包好的文件移动到程序的主模块相同的路径下即可使用;
2,子模块路径问题,指自己写的子模块放在了不同的路径下导致没有被打包,解决方法一:将所有模块放到相同的路径下,解决方法2,pyinstaller 打包语句中添加 -p “子模块路径”
3,程序内调用程序运行目录,指你使用了 os.getcwd() 或 os.path.abspath() 函数调用了软件的运行目录,因为 软件打包前和打包后的运行目录是不同的,所以出错,这里推荐使用下面的代码获得运行目录,
if getattr(sys, 'frozen', False):
    BASE_DIR = os.path.dirname(sys.executable)
    file_path = f'{os.path.join(BASE_DIR,sys.executable)}'
elif __file__:
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))

print(BASE_DIR)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 09:09:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-5 11:34:46 | 显示全部楼层
nahongyan1997 发表于 2021-8-5 09:06
闪退的原因:
1. 文件调用问题,指你调用了某些媒体文件,比如图片或者音乐,你只需要把打包好的文件移动 ...

谢谢你的热心帮忙!!!

cannot import name _elementpath

产生这个问题的原因是什么,

我是小白,就是一个简单的爬虫代码打包,没有调用什么.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-5 11:36:23 | 显示全部楼层
nahongyan1997 发表于 2021-8-5 09:06
闪退的原因:
1. 文件调用问题,指你调用了某些媒体文件,比如图片或者音乐,你只需要把打包好的文件移动 ...

你写的代码前面的01 02是怎么出来的

pyinstaller4.5,python3.6.5,会冲突吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 12:03:40 | 显示全部楼层
1,代码前面的行号是网站自动加的;
2,把代码给我我看看我这边能不鞥正常打包。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 02:09:50 | 显示全部楼层
nahongyan1997 发表于 2021-8-5 12:03
1,代码前面的行号是网站自动加的;
2,把代码给我我看看我这边能不鞥正常打包。

import requests
import os
import re

from fake_useragent import UserAgent

# headers = {'User-Agent': UserAgent().random}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0',
    'Referer':  'http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6',
    'csrf': 'HYAUG9BYRAI',
    'Cookie': '__guid=112476674.3310808051482316000.1628257329943.9053; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1628257330; _ga=GA1.2.1222733808.1628257331; _gid=GA1.2.156578177.1628257331; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1628258543; _gat=1; kw_token=HYAUG9BYRAI; monitor_count=8'
}
# print(headers)

print('==========酷我音乐下载============\n===========按歌手下载=============')

name = input('请输入歌手名字:')
page1 = int(input('请输入开始页数:'))
page2 = int(input('请输入结束页数:'))

def change_name(name):
    pattern = re.compile('[\\\/\:\"\?\|\<\>\:]') # \\\/\:\"\?\|\<\>\:
    new_name = re.sub(pattern, '-', name)
    return new_name

for page in range(page1, page2):

    print(f'正在下载第{page}页歌曲')
    # url = http://www.kuwo.cn/api/www/searc ... b-842a-290d889eed46   歌名搜索
    # url = http://www.kuwo.cn/api/www/searc ... b-b3e0-6fbaea9acb93   歌手搜索
    ss_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key='+name+f'&pn={page}&rn=30&httpsStatus=1&reqId=0ece6030-f6bd-11eb-b3e0-6fbaea9acb93'
    # print(ss_url)

    response = requests.get(ss_url, headers=headers)
    try:
        json_data = response.json()
        music_list = json_data['data']['list']
    except:
        pass
    if not os.path.exists('D:\\酷我音乐\\'):
        os.mkdir('D:\\酷我音乐\\')
    path = 'D:\\酷我音乐\\'
    for music in music_list:
        music_name = music['name']
        new_name = change_name(music_name)

        music_id = music['rid']
        # print('正在下载:', music_name)
        # 解析url:传入音乐ID 解析出这首音乐真实的播放地址(歌曲ID)
        jx_url = 'http://www.kuwo.cn/url?format=mp3?&rid=' + str(music_id) + '&response=url&type=convert_url3&br=128kmp3&from=web&t=1577081015618&reqId=f4af2221-2549-11ea-92dc-ble779c8d1d6'
        # print(music_name, music_id)
        try:
            jx_data = requests.get(jx_url, headers=headers).json()
            music_url = jx_data['url']
            music_data = requests.get(music_url, headers=headers).content
        except:
            pass

        with open(path + new_name +'.mp3', 'wb') as f:
            f.write(music_data)
        print(f'...当前第{page}页...下载完成...' + new_name)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 02:11:03 | 显示全部楼层
nahongyan1997 发表于 2021-8-5 12:03
1,代码前面的行号是网站自动加的;
2,把代码给我我看看我这边能不鞥正常打包。

D:\pythonProject\dist>kuowo.exe
==========酷我音乐下载============
===========按歌手下载=============
请输入歌手名字:张学友
请输入开始页数:1
请输入结束页数:10
正在下载第1页歌曲
Traceback (most recent call last):
  File "kuowo.py", line 61, in <module>
NameError: name 'music_data' is not defined
[6896] Failed to execute script 'kuowo' due to unhandled exception!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 02:14:16 | 显示全部楼层
234657812 发表于 2021-8-7 02:11
D:\pythonProject\dist>kuowo.exe
==========酷我音乐下载============
===========按歌手下载======== ...

import requests
import os
import re

from fake_useragent import UserAgent

# headers = {'User-Agent': UserAgent().random}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0',
    'Referer':  'http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6',
    'csrf': 'HYAUG9BYRAI',
    'Cookie': '__guid=112476674.3310808051482316000.1628257329943.9053; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1628257330; _ga=GA1.2.1222733808.1628257331; _gid=GA1.2.156578177.1628257331; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1628258543; _gat=1; kw_token=HYAUG9BYRAI; monitor_count=8'
}
# print(headers)

print('==========酷我音乐下载============\n===========按歌手下载=============')

name = input('请输入歌手名字:')
page1 = int(input('请输入开始页数:'))
page2 = int(input('请输入结束页数:'))

def change_name(name):
    pattern = re.compile('[\\\/\:\"\?\|\<\>\:]') # \\\/\:\"\?\|\<\>\:
    new_name = re.sub(pattern, '-', name)
    return new_name

for page in range(page1, page2):

    print(f'正在下载第{page}页歌曲')
    # url = http://www.kuwo.cn/api/www/searc ... b-842a-290d889eed46   歌名搜索
    # url = http://www.kuwo.cn/api/www/searc ... b-b3e0-6fbaea9acb93   歌手搜索
    ss_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key='+name+f'&pn={page}&rn=30&httpsStatus=1&reqId=0ece6030-f6bd-11eb-b3e0-6fbaea9acb93'
    # print(ss_url)

    response = requests.get(ss_url, headers=headers)
    try:
        json_data = response.json()
        music_list = json_data['data']['list']
    except:
        pass
    if not os.path.exists('D:\\酷我音乐\\'):
        os.mkdir('D:\\酷我音乐\\')
    path = 'D:\\酷我音乐\\'
    for music in music_list:
        music_name = music['name']
        new_name = change_name(music_name)

        music_id = music['rid']
        # print('正在下载:', music_name)
        # 解析url:传入音乐ID 解析出这首音乐真实的播放地址(歌曲ID)
        jx_url = 'http://www.kuwo.cn/url?format=mp3?&rid=' + str(music_id) + '&response=url&type=convert_url3&br=128kmp3&from=web&t=1577081015618&reqId=f4af2221-2549-11ea-92dc-ble779c8d1d6'
        # print(music_name, music_id)
        try:
            jx_data = requests.get(jx_url, headers=headers).json()
            music_url = jx_data['url']
            music_data = requests.get(music_url, headers=headers).content
        except:
            pass

        with open(path + new_name +'.mp3', 'wb') as f:
            f.write(music_data)
        print(f'...当前第{page}页...下载完成...' + new_name)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-8 15:43:26 | 显示全部楼层
234657812 发表于 2021-8-7 02:14
import requests
import os
import re


我直接打包成功了 文件在 dist/kuwo/kuwo.exe,

重装pyinstaller吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 15:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表