pyinstaller 可执行文件在其他电脑上无法按预期工作

问题描述 投票:0回答:1

我的程序使用请求模块自动发送和删除消息,只有两个函数,即 sem() 和 dem(),程序在我自己的 PC 上运行良好,即使在我转换它之后,但是一旦我的朋友运行了可执行文件在她自己的电脑上,那就是 dem() 停止工作的时候。

from pathlib import Path
import requests
import json
from operator import itemgetter
import time

count = 0

txt = Path(__file__).parent / "token.txt"
txt1 = Path(__file__).parent / "channel.txt"
txt2 = Path(__file__).parent / "message.txt"
txt3 = Path(__file__).parent / "timer.txt"
token = txt.read_text()
channel = txt1.read_text()
message = txt2.read_text()
timer = txt3.read_text()

payload = {
    "authorization": token
}

jsondata = {
    "content": message
}

ids = []

def sem():
    requests.post(url=f"https://discord.com/api/v9/channels/{channel}/messages", headers=payload, json=jsondata)

def dem(message_id):
    requests.delete(url=f"https://discord.com/api/v9/channels/{channel}/messages/{message_id}", headers=payload)
    del(ids[-1])
    evaluate()

def evaluate():
    global r
    global i
    r = requests.get(url=f"https://discord.com/api/v9/channels/{channel}/messages", headers=payload)
    i = list(json.loads(r.text))
    i.sort(key=itemgetter("timestamp"))
    for value in i:
        if value['author']['username'] == "username":
            ids.clear()
            ids.append(value['id'])

evaluate()
while True:
    time.sleep(int(timer))
    sem()
    evaluate()
    dem(ids[-1])
    count += 1
    print("Count: "+str(count))

我的程序不仅仅是一个可执行文件,它应该有多个可执行文件,目前我只有2个程序,一个是自动消息发送器,另一个是手动消息发送器,这些程序不会相互交互总而言之,重点是使用一个文件夹来存放 2 个可执行文件。

这是我转换程序的方法

  1. 转换 onedir 中的自动消息发送器
  2. 也将手动消息发送器转换到 onedir 中
  3. 移动第二个程序的 _internal 和第一个程序文件夹中的可执行文件,而不替换文件

通过 Whatsapp 传输可执行文件,所以这也可能是一个问题,在我的朋友下载并使用它后,它出现了问题。

python pyinstaller
1个回答
0
投票

我的脚本无法在朋友的电脑上运行的原因是,evaluate() 函数正在过滤从 request.get 接收到的特定用户名信息,当我在我的帐户中运行它时,它有我的不和谐用户名,但因为它可以转换后不能更改 dem() 找不到旧用户名的 ID,朋友也无法在自己的不和谐帐户上使用它。

脚本的解决方案是让“用户名”可更改

© www.soinside.com 2019 - 2024. All rights reserved.