【问题标题】:directory file import error in pythonpython中的目录文件导入错误
【发布时间】:2018-12-20 08:57:44
【问题描述】:

我的文件结构类似于

/home/ec2-user/wep-rs/WEPR/weprs/api/voucher.py
/home/ec2-user/wep-rs/WEPR/weprs/api/scrappers/quotes/quotes.py
i want to access voucher.py from quotes.py 

这些我都试过了

import sys
sys.path.append("..")# ValueError: attempted relative import beyond top-level package
from .. .. import api # ValueError: attempted relative import beyond top-level package
sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs/api/")
from api.voucher import Voucher
error i am getting is 
ModuleNotFoundError: No module named 'api'

【问题讨论】:

  • sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs") 也许?
  • 不工作相同的错误 no module named api, sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs") 从 api 导入凭证

标签: python django python-3.x python-2.7


【解决方案1】:

不过,你走在正确的道路上..

应该是:

sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs/api/")
from voucher import Voucher # or just import voucher

在我向您展示的示例中,from voucher import Voucher 尝试从 /home/ec2-user/wep-rs/WEPR/weprs/api/voucher.py 导入 Voucher 类。

否则,以您的方式,您正在尝试访问/home/ec2-user/wep-rs/WEPR/weprs/api/api/voucher.py
另外,请记住必须有目录中的 __init.py__ 文件。

【讨论】:

  • sys.path.append(/home/ec2-user/wep-rs/WEPR/weprs/api/api/voucher.py) 是否再次需要像从凭证导入凭证一样导入并创建类的对象或者直接访问类下的函数
  • 如果Vouchervoucher.py中定义的类,那么import voucher可以通过voucher.Voucher.method()访问它,而from voucher import Voucher可以通过Voucher.method()访问函数.
  • sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs/api/voucher.py") 从凭证导入凭证我仍然收到 ModuleNotFoundError: No module named '优惠券'
  • 你为什么使用sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs/api/voucher.py")?我在回答中明确告诉过你,应该是sys.path.append("/home/ec2-user/wep-rs/WEPR/weprs/api/")from voucher import Voucher。如果需要,请复制/粘贴..
  • 没问题。如果有效,您可以接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 2021-09-09
  • 1970-01-01
  • 2017-07-31
  • 2014-04-26
  • 2018-05-11
  • 2019-12-03
相关资源
最近更新 更多