Skip to main content
 首页 » 编程设计

python之我的 python 代码不会在我的 IDE 之外运行

2025年05月04日16bjzhanghao

以下代码在我的 IDE (PyScripter) 中运行良好,但无法在外部运行。当我进入计算机然后使用 python26 并双击该文件(在本例中为 .pyw)时,它无法运行。我不知道为什么要这样做,任何人都可以解释一下吗?

这是在 windows 7 顺便说一句。

我的代码:

#!/usr/bin/env python 
import matplotlib 
 
 
from mpl_toolkits.mplot3d import  axes3d,Axes3D 
import matplotlib.pyplot as plt 
from matplotlib import cm 
import numpy as np 
from numpy import arange, sin, pi 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg 
from matplotlib.figure import Figure 
from matplotlib.ticker import LinearLocator, FixedLocator, FormatStrFormatter 
 
import Tkinter 
import sys 
 
class E(Tkinter.Tk): 
    def __init__(self,parent): 
        Tkinter.Tk.__init__(self,parent) 
        self.parent = parent 
 
 
        self.protocol("WM_DELETE_WINDOW", self.dest) 
        self.main() 
 
    def main(self): 
        self.fig = plt.figure() 
        self.fig = plt.figure(figsize=(4,4)) 
        ax = Axes3D(self.fig) 
 
 
 
        u = np.linspace(0, 2 * np.pi, 100) 
        v = np.linspace(0, np.pi, 100) 
 
        x = 10 * np.outer(np.cos(u), np.sin(v)) 
        y = 10 * np.outer(np.sin(u), np.sin(v)) 
        z = 10 * np.outer(np.ones(np.size(u)), np.cos(v)) 
 
 
 
 
 
        t = ax.plot_surface(x, y, z,  rstride=4, cstride=4,color='lightgreen',linewidth=1) 
 
 
 
 
        self.frame = Tkinter.Frame(self) 
        self.frame.pack(padx=15,pady=15) 
 
        self.canvas = FigureCanvasTkAgg(self.fig, master=self.frame) 
 
        self.canvas.get_tk_widget().pack(side='top', fill='both') 
 
 
        self.canvas._tkcanvas.pack(side='top', fill='both', expand=1) 
 
 
 
        self.btn = Tkinter.Button(self,text='button',command=self.alt) 
        self.btn.pack() 
 
    def alt (self): 
        print 9 
    def dest(self): 
        self.destroy() 
        sys.exit() 
 
 
 
if __name__ == "__main__": 
    app = E(None) 
    app.title('Embedding in TK') 
    app.mainloop() 

编辑:

我尝试在命令行中导入模块并收到以下警告。

Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import matplotlib 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
  File "C:\Python26\lib\site-packages\matplotlib\__init__.py", line 129, in <module> 
    from rcsetup import defaultParams, validate_backend, validate_toolbar 
  File "C:\Python26\lib\site-packages\matplotlib\rcsetup.py", line 19, in <module> 
    from matplotlib.colors import is_color_like 
  File "C:\Python26\lib\site-packages\matplotlib\colors.py", line 54, in <module> 
    import matplotlib.cbook as cbook 
  File "C:\Python26\lib\site-packages\matplotlib\cbook.py", line 168, in <module> 
    class Scheduler(threading.Thread): 
AttributeError: 'module' object has no attribute 'Thread' 
>>> 

编辑(2)

我尝试了 McSmooth 所说的并得到了以下输出。

Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import threading 
>>> print threading.__file__ 
threading.pyc 
>>> threading.Thread 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'Thread' 
>>> 

请您参考如下方法:

除非您一直在乱用您的标准库,否则您的 python 路径中似乎有一个名为 threading.py 的文件正在替换标准库。尝试:

>>>import threading 
>>>print threading.__file__ 

并确保它是您的 python lib 目录中的那个(它应该是C:\python26\lib)。如果导入的文件不正确,则必须将假文件重命名为其他名称。如果它是正确的文件,则尝试:

>>>threading.Thread 

并查看是否在 REPL 中抛出异常。

更新

这很奇怪。在我的系统上,它给出了源文件的名称。另存为文件或在命令行运行以下代码以找到它。

import os.path as op 
import sys 
 
files = (op.join(path, 'threading.py') for path in sys.path) 
print filter(op.exists, files)