函数调用和文件路径混淆

时间:2017-09-13 05:07:41

标签: python function pycharm call filepath

我有两个脚本,mainstatistics。在一个脚本main中,调用另一个脚本statistics中的几个函数。代码如下。

if initial_action == "get_portfolio_statistics":
    statistics.get_portfolio_status()
    statistics.get_current_securities()
    statistics.get_open_trades()

当然,就调用名称而言,函数匹配,而我的IDE(PyCharm)没有给出任何警告。重构后重构的测试显示了基本相同的错误报告:

Traceback (most recent call last):
  File "G:/stuff/dev/!projects+repositories/RYZ/main.py", line 2, in <module>
    import statistics
  File "G:\stuff\dev\!projects+repositories\RYZ\statistics.py", line 1, in 
   <module>
    import main
  File "G:\stuff\dev\!projects+repositories\RYZ\main.py", line 12, in <module>
    statistics.get_portfolio_status()
AttributeError: module 'statistics' has no attribute 'get_portfolio_status'

然而,有一些有趣的复发已经出现。首先,在某些情况下,由于没有可识别的原因,测试会检查函数名称何时更改,但结果与进一步测试不一致。其次,文件路径中后退/正斜杠的使用不一致,第一次调用G:/,最后两次调用G:\,尽管第一次和最后一次调用指的是同一个文件。

我的问题是这个错误是否是函数命名的问题,文件路径不一致的问题,交叉导入的问题,或者由于所调用的函数不在类中的事实。

项目结构:

ryz server backend (RYZ directory)
 - main.py
 - statistics.py

导入结构:

# in main.py
import statistics

# in statistics.py
import main

statistics.py结构:

<imports...>
def get_portfolio_status():
    <code>
def get_current_securities():
    <code>
def get_open_trades():
    <code>

1 个答案:

答案 0 :(得分:1)

我敢打赌这是因为交叉导入。尝试将statistics.py所需的任何内容移动到该文件,然后导入并从main.py调用。

您的功能命名正常。

我不担心斜杠的混合。但是,如果您自己构建路径,请使用os模块:

import os
path = os.path.join(os.getcwd(), 'dir', 'filename')

这将确保您获得适合您平台的路径。