首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载用MSYS2 MinGW 32位生成的pyd模块

无法加载用MSYS2 MinGW 32位生成的pyd模块
EN

Stack Overflow用户
提问于 2021-06-24 14:52:44
回答 1查看 135关注 0票数 0

我有两个简单的文件: main.py和config_cowsay.py

main.py

代码语言:javascript
复制
import cowsay
import config_cowsay

char = config_cowsay.choose_character()
print(char)
print(cowsay.get_output_string(char, "Raptors are evil"))

config_cowsay.py

代码语言:javascript
复制
from random import *

def choose_character():
    n = randint(1, 3)
    switch = {
        1: "trex",
        2: "cow",
        3: "stegosaurus",
    }
    return switch.get(n, "daemon")

如果我运行main.py,程序将正确执行。现在,我需要将config_cowsay转换为pyd文件,并且仍然能够从main.py调用它。我使用MSYS MinGW 32位和makefile一起来完成这个任务(链接makefile不会给问题解决方案添加任何内容,但是如果需要的话我可以这样做)。从MSYS MinGW 32位终端执行Makefile将生成一个文件夹,其中包含前面的main.py和旁边的config_cowsay.pyd。它还生成一个main.exe,作为另一个文件夹中的一个可执行文件。

代码语言:javascript
复制
 root  
   |-src
      |-main.py
      |-config_cowsay.py
   |-test_cowsay
      |-main.py
      |-config_cowsay.pyd 
   |-dist
      |-main.exe

所以现在,如果我从powershell终端上运行exe,程序就会运行得很完美。如果我使用main.py MSYS MinGW 32位终端运行config_cowsay.pyd旁边的文件,那么main.py脚本将使用pyd模块完美地执行,而无需更改main.py代码中的任何内容。但是,如果我试图使用使用python main.py运行的powershell终端来运行main.py,就会发现一个错误,它告诉我模块config_cowsay不存在。

我已经试过了在这个问题上能找到的一切。将pyd文件添加到sys.path变量,编辑PYTHONPATH环境变量,将pyd dll移动到站点包或dll python文件夹,将config_cowsay.pyd重命名为config_cowsay_p.pyd等。

我确保MSYS的环境与我的计算机相同,相同的python版本3.8.9 32位,安装了相同的模块等等。所以这不应该是python版本的问题。最重要的是,运行我的powershell终端的输出main.exe,这意味着我的计算机环境应该与我用来生成pyd的MSYS兼容。

如果你需要更多细节,请告诉我。谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2021-08-25 07:58:13

我通过阅读MSYS环境并直接使用我的计算机python环境来工作。我在计算机上全局安装了python,使用了安装文件(https://cython.readthedocs.io/en/latest/src/userguide/source_files_and_compilation.html)而不是makefile。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68118085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档