Python中如何正确导入ccxt模块,解决目录结构下的import问题
我写的是 from hunter.trade import ccxt 但是运行时提示我 no moudle named hunter
Python中如何正确导入ccxt模块,解决目录结构下的import问题
3 回复
这个问题我遇到过,导入ccxt时确实容易因为目录结构出问题。
首先确保你已经安装了ccxt:
pip install ccxt
如果你的项目结构是这样的:
project/
├── main.py
└── utils/
└── exchange.py # 这里要导入ccxt
在exchange.py中直接导入ccxt:
import ccxt
然后在main.py中导入你的模块:
from utils.exchange import some_function
如果还是报错,可能是Python路径问题。有几种解决方法:
- 相对导入(如果utils是个包):
# 在exchange.py中
from .. import ccxt # 不推荐,容易混乱
- 绝对导入(推荐):
# 在exchange.py中
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import ccxt
- 更好的做法 - 把项目做成可安装的包:
创建
setup.py:
from setuptools import setup, find_packages
setup(
name="my_project",
packages=find_packages(),
)
然后安装你的项目:
pip install -e .
这样在任何地方都能正确导入。
- 最简单的方法 - 确保ccxt安装在同一个Python环境,然后在项目根目录运行代码。
我通常用第3种方法,这样最干净。如果只是小脚本,直接确保所有文件在同一个目录下运行就行。
总结:把项目做成可安装的包最省心。
首先, 你得确定你的运行文件和 hunter 是不是在同级目录下,或者 hunter 在不在你的 python 库中
如果不满足上述条件, 就会出现 no moudle named hunter
解决方法参考: https://blog.csdn.net/pwc1996/article/details/52577148
了解了 python 的 import 中的坑

