我对Python有点陌生,因为我已经习惯了IntelliJ,所以我正在PyCharm中构建一个项目,并且我的文件结构有问题。当我需要在同一子目录(目录Public Function SortLexicoGraphicallyBigIntegerArray(ByRef data As Byte()) As UInteger()
Dim OrderedRotations As New List(Of UInteger)
Dim index As Integer = 0
Dim data1 As Byte()
Dim data2 As Byte()
Dim rotation As UInteger = 0
Dim eachRotation As Integer = 0
Dim TryAgain As Boolean = False
For rotation = 0 To data.Length - 1
data1 = GetRotation(data, rotation)
OrderedRotations.Add(rotation)
If OrderedRotations.Count > 1 Then
Dim flag As Boolean
Do
flag = False
For eachRotation = OrderedRotations.Count - 1 To 0 Step -1
data1 = GetRotation(data, OrderedRotations(rotation))
If OrderedRotations(eachRotation) = OrderedRotations(rotation) Then Continue For
data2 = GetRotation(data, OrderedRotations(eachRotation))
For index = 0 To data.Length - 1
If data1(index) > data2(index) Then
Exit For
ElseIf data1(index) < data2(index) Then
Dim tmpFirst As UInteger = OrderedRotations(rotation)
OrderedRotations(rotation) = OrderedRotations(eachRotation)
OrderedRotations(eachRotation) = tmpFirst
flag = True
End If
Next
Next
Loop While flag
End If
Next
Return OrderedRotations.ToArray()
End Function
)中导入文件时,我必须输入
c
,其中from a.b.c import y
是项目的主目录a
是我所在的子目录。
因此我无法进入b.c
目录。如果我想通过命令行运行此文件,则会导致问题,它使用当前目录作为路径,这意味着导入对import y
一无所知。我该怎么做才能解决此问题?
谢谢!
答案 0 :(得分:1)
出于这个答案的目的,我假设y
是c
目录中的Python模块。换句话说,y.py
中有一个名为a/b/c
的文件。
import y
在目录c
中的Python模块中工作,如果当前工作目录也是c
。
在具有Python插件的Intellij IDEA中(大多数时间与PyCharm几乎相同),在您设置为运行脚本的每个运行/调试配置中,当前工作目录都称为“工作目录”。
如果import y
位于c
上, PYTHONPATH
也将起作用。
使y
对import语句可用的另一种方法是将a
和b
目录转换为Python包。这意味着至少在__init__.py
和a
目录中都放置一个空的b
文件。
然后可以将a
用作项目的根目录,并使用:
from a.b.c import y
如果您不确定Python如何解析导入,则值得阅读The Definitive Guide to Python import Statements。