函数调用和文件路径混淆

2024-04-19 21:36:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个脚本,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>

Tags: 函数inpydevimport脚本getmain
1条回答
网友
1楼 · 发布于 2024-04-19 21:36:55

我敢打赌是因为交叉进口。试着移动任何统计.py需要到该文件,然后导入到并从中调用主.py. 你知道吗

你的函数命名是正常的。你知道吗

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

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

这将确保您获得适合您的平台的路径。你知道吗

相关问题 更多 >