导入课程时遇到问题

时间:2019-03-04 04:22:58

标签: python

在Windows 10上,使用Visual Studio 19和python版本Python 3.7.2,我遇到以下问题

我正在尝试使用一个类来从文本文件获取用户名和密码以登录到sql server。 该类如下:

class LogonSql:

  def __init__(self,path):
        self.path = path
        print ('p = ' + self.path) # the class does not appear in this print


    def usr(self):

         lc = open(self.path,'r')


         up = lc.readlines()
         u = up[0]
         u = u.strip('\n')
         p = up[1]
         p = p.strip('\n')

         return u,p



#x = LogonSql.usr('g:\python_test\lib\jcd.txt')

#x = LogonSql('g:\python_test\lib\SqlLogon.txt')
#p = x.usr()

#print ('p = ' + p[1])
#print ('u = ' + p[0])

如果我在未注释上述5个条件的情况下运行该类,则效果很好。

但是,当我导入类时,我得到以下错误 在此python程序中,我在第11行收到以下错误 我= LogonSql('g:\ python_test \ lib \ SqlLogon.txt')

import pypyodbc
import mysql.connector
from mysql.connector.cursor import MySQLCursor
import ctypes
import sysconfig
import Sql_logon

print('m = ' + str(dir('Sql_logon')))


i = LogonSql('g:\python_test\lib\SqlLogon.txt') # on this line the error happens 
                # I am slso confused to where all those other methods are coming from
x = i.usr()
u = str(x[0])
p = str(x[1])

ctypes.windll.user32.MessageBoxW(0,'user  = ' + u,p,1)
con = pypyodbc.connect('DSN=mynewdsn; UID=' + u + ';PWD=' + p + ';')
cur = con.cursor()


m = ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', 
'__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', 
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', 
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 
'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 
'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 
'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Traceback (most recent call last):
  File "G:\python_test\testsql\testsql.py", line 11, in <module


NameError: name 'LogonSql' is not defined

我在上面的列表中找不到LogonSql类吗?

我在用户区域的环境变量中设置了以下内容 设置PYTHONPATH PYTHONPATH = G:\ python_test \ lib

在Visual Studio中,我已将搜索路径设置为PYTHONPATH

何时需要制作* .py代码的编译版本。我认为它不需要在Windows中的dll类别中?

我的命名约定可能需要引起注意。

谢谢 杰克

1 个答案:

答案 0 :(得分:0)

我要做的第一件事是检查您在LogonSql类上的缩进。它的排列不正确,这可能会导致python问题。

第二项是您没有在主文件中导入LogonSql

您应该声明以下内容,假设您的LogonSql类存储在名为logonsql.py的文件中,并且与引用LogonSql类的文件位于同一目录中:

from logonsql import LogonSql

之后,您可以调用您的班级并继续使用它。请参阅屏幕截图,作为对我的结构的参考。

enter image description here