导入包含sitepackages中的类的python文件

2024-10-02 18:16:44 发布

您现在位置:Python中文网/ 问答频道 /正文

免责声明:我不是Python专家,我知道以前可能有人问过这个问题,但我没能找到它(或者意识到我找到了它)

目标

我创建了一个Python程序,它由3个Python文件组成,Qm_op.pyQm_basis.pyHamiltonian_1d_Spin.py(每个文件都包含一个类),它们各自正确运行。这些Python文件位于

C:\Users\FriendlyLagrangian\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\qusim

目录(qusim应该是包的名称),这样Python就可以在任何地方找到它。这样做的目的是能够在其他任何地方使用此软件包

import qusim

就像我为numpy所做的一样

什么有效:

如果我在任何地方创建一个新的Python文件,或者运行一个包含以下代码的Python终端

>>> import qusim
>>> qusim
 <module 'qusim' from 'C:\\Users\\FriendlyLagrangian\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\qusim\\__init__.py'>

看来至少有些事情进展顺利。(如您所见,我在同一目录中还有一个空的__init__.py

什么不起作用:

如果我在某个地方创建一个新文件,然后我尝试

>>> import qusim
>>> basis = Qm_basis(3,2)

就像在我得到的文件Qm_basis.py中的类Qm_basis下编写它一样

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    basis = Qm_basis(3,2)
NameError: name 'Qm_basis' is not defined

这不是布埃诺。但是如果我跑

>>> from qusim import Qm_basis
>>> basis  = Qm_basis.Qm_basis(3,2)
>>> basis.bin
[[0, 1, 1], [1, 0, 1], [1, 1, 0]] (i.e. this is correct output)

成功!但它很难看,而且不像我读过的包那样工作(至少在语法方面)。有趣的是,运行类似的操作可以获得更高的收益

>>> from qusim import Qm_basis
>>> basis  = Qm_basis(3,2)
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    basis  = Qm_basis(3,2)
TypeError: 'module' object is not callable

我尝试过的:

在阅读时,我尝试了很多方法,从使用fromimport和我的文件名的所有可能排列来修改__init__.py的内容,但都不起作用。我也很困惑为什么,但我的却不是

非常感谢你抽出时间,我真的被困住了


Tags: 文件frompyimportinitislocal地方