无法从两个类别的不同文件中导入

时间:2018-07-13 06:09:41

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

我无法从位于两个不同文件中的两个不同类中导入实例。这两个文件如下所示:

文件名:doublemap.py

import stops
class DoubleMap(object):
   def __init__(self):
      self.url = "https://someurl"

mapInstance = DoubleMap()

文件名:Stops.py

from doublemap import DoubleMap
import urllib.request as urllib2
import json

class Bus_stops(DoubleMap):
    def __init__(self):
       self.stops_maps = {}
       self.stops_URL = DoubleMap().url+"stops"

    def fetch_details(self):
       json_obj = urllib2.urlopen(self.stops_URL)
       data = json.load(json_obj)
       for stops_details in data:
          self.stops_maps[stops_details['id']] = {
            stops_details['name'],
            stops_details['description'],
            stops_details['lat'],
            stops_details['lon'],
            stops_details['buddy'],
            # stops_details['fields']
        }
     return self.stops_maps


temp = Bus_stops()
print(temp.fetch_details())

疑问:

  1. 如何使用fetchdetails函数将stop.py返回的值存储到doublemap.py中并存储在某些变量中?

  2. 当我运行doublemap.py时,它显示了印在Stops.py中的值,但是如果我运行了stops.py,则会出现以下错误:

  

回溯(最近通话最近一次):

File "Doublemap/DoubleMap/stops.py", line 1, in <module>
  from doublemap import DoubleMap
File "Doublemap/DoubleMap/doublemap.py", line 1, in <module>
  import stops
File "Doublemap/DoubleMap/stops.py", line 1, in <module>
  from doublemap import DoubleMap
ImportError: cannot import name 'DoubleMap'

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

使用两个脚本的相同目录创建文件名dependency constraints

,您的项目目录结构应类似于:

gradle.properties

顺便说一句,您可以在标题中进行相关的导入。

  

init .py的主要用途是初始化Python软件包。的   证明这一点的最简单方法是看一下   一个标准的Python模块。

您在__init__.py中的代码:

pro/
   __init__.py
   doublemap.py
   stops.py

如果不需要,请在doublemap.py的开头导入import stops

For more

答案 1 :(得分:0)

在Stops.py 中这样称呼

entrypoint.sh

doublemap.py 中的使用方法返回变量

from doublemap import DoubleMap

k = DoubleMap()
print(k.Method())

答案 2 :(得分:0)

进口周期是邪恶的。不要。

此外,您在这里不需要它:doublemap.py没有理由导入stops.py

文件名:doublemap.py

# import stops # NO IMPORT CYCLE!
class DoubleMap(object):
   def __init__(self):
      self.url = "https://someurl"

mapInstance = DoubleMap()

文件名:Stops.py

from doublemap import DoubleMap
import urllib.request as urllib2
import json

class Bus_stops(DoubleMap):
    def __init__(self):
       self.stops_maps = {}
       self.stops_URL = DoubleMap().url+"stops"

    def fetch_details(self):
       json_obj = urllib2.urlopen(self.stops_URL)
       data = json.load(json_obj)
       for stops_details in data:
          self.stops_maps[stops_details['id']] = {
            stops_details['name'],
            stops_details['description'],
            stops_details['lat'],
            stops_details['lon'],
            stops_details['buddy'],
            # stops_details['fields']
        }
     return self.stops_maps


temp = Bus_stops()
print(temp.fetch_details())