看到:
以为是其他什么问题呢
帮其搜索:
tushare
module tushare has no attribute set_token
新人发帖求助!python使用tushare股票分析包方法报错-CSDN论坛
“估计你的文件名叫tushare.py, 改个名就好了.”
->那估计是这个问题了:小白测试python时,把测试文件,写成了:tushare.py
和要测试的库tushare,重名了。
导致Python解析器去解析代码
import tushare as ts
变成自己的测试文件tushare.py
而不是要测试的库:tushare了。
也看到了别的类似的例子
pycharm 导入tushare错误,请帮帮忙,百度半天也没搞定-CSDN论坛
import tushare as ts <p>print(ts.__version__)</p><p>提示错误##########</p><p>D:\Programs\Anaconda3\python.exe D:/PythonWorks/PycharmProjects/Stocks/tushare.py</p><p>Traceback (most recent call last):</p><p> File "D:/PythonWorks/PycharmProjects/Stocks/tushare.py", line 1, in <module></p><p>import tushare as ts </p><p>File "D:\PythonWorks\PycharmProjects\Stocks\tushare.py", line 2, in <module></p><p> print(ts.__version__)</p><p>AttributeError: module 'tushare' has no attribute '__version__'</p><p>Process finished with exit code 1</p>
很明显就是同样的问题。
“我下好了tushare 导入正确,但是在调用函数的时候,为什么总是报没有这个函数呢,
print(help(ts.get_k_data()))
AttributeError: module ‘tushare’ has no attribute ‘get_k_data’
或许你将tushare进行了改变,赋值替换了它或自己新建了一个叫tushare的文件”
不要以tushare作为文件名
在策略模块定义函数引用tushare pro – VincentZHOU – JoinQuant
“也有可能你的研究中有一个叫 tushare.py 的文件,导致没有调到真正的 tushare 包,如果有的话可以试着改个名字”
此处,去写代码测试效果:
此处是Mac中
去用pip安装库
【已解决】mac中pip安装Python库tushare
然后去VSCode中写代码测试:
起个正常的,典型的,用于测试的文件名:
比如:
testTushare.py
import tushare as ts print("ts.__version__=%s" % ts.__version__) ts.set_token('your token here')
可以正常输出:
ts.__version__=1.2.48
而如果改为:
用于测试的文件名,和要测试的库 tushrare 同名,变成:
tushare.py
import tushare as ts print("ts.__version__=%s" % ts.__version__) ts.set_token('your token here')
就会出现:
加断点调试时,就能发现,导入的ts,其实是空的,啥函数和属性都没有:
后面的代码:
print("ts.__version__=%s" % ts.__version__)
就会报错了:
发生异常: AttributeError
partially initialized module ‘tushare’ has no attribute ‘__version__’ (most likely due to a circular import)
File “/Users/limao/dev/crifan/python/testTushare/tushare.py”, line 2, in <module> File “/Users/limao/dev/crifan/python/testTushare/tushare.py”, line 1, in <module> import tushare as ts
如果注释掉上面一行,用下面的
ts.set_token('your token here')
测试,也是同样问题:
与之对比:
名字不要是库名,即可正常导入和调试:
所以,结论就是:
【总结】
- 应该:起个,见名知意的,更加易懂的,不容易混淆的文件名
- 常见思路和做法:测试用的,演示用的文件名中 ,往往包含test,demo,example等字眼
- 此处:
- 举例:比较合适的写法
- testTushare.py
- demoTushare.py
- tushareDemo.py
- tushareTest.py
- tushareExample.py
- 不应该:和测试的库同名
- 此处:
- 用于写测试tushare的Python库的测试文件,不要写成:tushare.py
- 坏处:会和原有的库冲突
- 导致:import导入时,错误导入了自己的测试文件,而不是原有的库
- -》引申 + 举一反三 + 相关:
- 也不应该:起个其他简单的,偷懒的名字
- 典型的有:
- 1.py
- 123.py
- test.py
- demo.py
- a.py
- 等等
- 都是属于:
- 坏习惯
- 偷懒的写法
- 容易和其他文件冲突的写法
- 也不容易看懂=没法从你文件名看出你要做什么