如何从文件导入python代码?

如何从文件导入python代码?,python,import,multifile,Python,Import,Multifile,我对问这个问题犹豫不决,因为我见过类似的问题,答案过于复杂。我想回答的问题因为“模糊”和“不是真正的问题”而被关闭,所以我将尽可能具体 我在一个名为“line.py”的文件中有一个名为“line”的对象。我想创建另一个从“line”继承的对象,称为“line_segment”,并将其放入同一目录中名为“line_segment.py”的文件中 path_finding_lib/ line.py line_segment.py a_star.py 问题是我似乎找不到一种方法来从

我对问这个问题犹豫不决,因为我见过类似的问题,答案过于复杂。我想回答的问题因为“模糊”和“不是真正的问题”而被关闭,所以我将尽可能具体

我在一个名为“line.py”的文件中有一个名为“line”的对象。我想创建另一个从“line”继承的对象,称为“line_segment”,并将其放入同一目录中名为“line_segment.py”的文件中

path_finding_lib/
   line.py
   line_segment.py
   a_star.py
问题是我似乎找不到一种方法来从“line_segment.py”内部使用“line.py”中的代码,而不向系统路径变量添加字符串之类的东西


难道没有一种方法可以从这样的文件路径导入吗?若否,原因为何

而您可以使用以下命令附加到特定文件的python路径:

import sys
sys.path.append('pathtoModule')
如果它们位于同一文件夹中(不是模块,因为您缺少init.py),您只需执行以下操作即可从行模块导入:

from line import Line
class LineSegment(line):
命名约定为模块提供下划线和小写,为类提供大写:

它是非标准的,如果在项目中动态附加到python路径,可能会导致问题,因为它会导致对象比较错误

如果您有一个对象声明如下:

path_finding_lib/
   line.py
   line_segment.py
   a_star.py
   somemodule/
       afile.py
如果行模块使用路径
somemodule.afile.SomeObject

它与从文件中实例化对象不同:

afile.SomeObject.
如果afile返回afile.SomeObject的实例,并将该对象与somemodule.afile.SomeObject的实例进行相等性比较,则会发现它们不相等。 i、 e


由于它们位于同一目录中,请创建一个名为
\uuuu init\uuuu.py
的空文件。这使Python可以将您正在使用的目录视为一个包,并且您可以从这些其他文件中提取对象和方法。

在其他文件中使用Python代码的最简单方法是使用语句

什么时候说

import xyz 
Python将尝试查找文件xyz.py。它调查

  • site packages文件夹(python安装目录中的文件夹,其中包含诸如say django等预安装模块)
  • PYTHONPATH环境变量(或python中的sys.path)中提到的位置
  • 您当前的目录
  • 在您的情况下,您的程序应该具有以下行

    from line import line
    
    其中第一行是line.py文件,第二行是类 无论您想在何处使用line对象进行继承,只需使用

    class newline(line):
    
    关键在于如何运行程序。如果您从path_finding_lib中运行它(即,当您的工作目录是path_finding_lib时,您会

    python line_segment.py
    
    ,它应该可以工作(您也可以选择在同一文件夹中创建一个空白文件init.py)

    如果你从你的主目录运行它

    ~$ python /path_to/path_finding_lib line_segment.py
    
    这将不起作用。这是因为python将搜索网站包、PYTHONPATH和您当前的目录,但找不到line.py。要在任何地方运行它,请在运行之前将line.py的位置添加到PYTHONPATH

    $export PYTHONPATH=/path_to/path_finding_lib
    
    那么你应该可以运行它了


    注意:我假设你有一个linux系统。很遗憾,对于Windows,我不知道修改PYTHONPATH的过程。谢谢,这非常有帮助。很抱歉他也没有变量名。我对python还是很陌生,对命名约定也不太熟悉(所以感谢链接)。这仍然太模糊了:如果您在
    line_segment.py
    中仅使用
    导入行
    ,会出现什么问题?您是如何运行程序的,即在哪个文件中执行“开始”?
    $export PYTHONPATH=/path_to/path_finding_lib