相关疑难解决方法(0)

如何导入其他Python文件?

如何在Python中导入其他文件?

  1. 我怎样才能导入特定的python文件import file.py
  2. 如何导入文件夹而不是特定文件?
  3. 我想根据用户输入在运行时动态加载Python文件.
  4. 我想知道如何从文件中加载一个特定的部分.

例如,main.py我有:

from extra import * 
Run Code Online (Sandbox Code Playgroud)

虽然这给了我所有的定义extra.py,但也许我想要的只是一个定义:

def gap():
    print
    print
Run Code Online (Sandbox Code Playgroud)

我怎么添加到import语句只得到gapextra.py

python python-import

702
推荐指数
13
解决办法
141万
查看次数

使用'导入模块'或'从模块导入'?

我试图找到一个关于是否最好使用的综合指南import modulefrom module import?我刚刚开始使用Python,我试图从最初的实践开始.

基本上,我希望如果有人能分享他们的经验,有什么喜好其他开发商,什么是避免任何的最好办法陷阱的道路?

python python-import

370
推荐指数
12
解决办法
13万
查看次数

Python:如何从dir中的所有模块导入?

目录结构:

main.py
my_modules/
   module1.py
   module2.py
Run Code Online (Sandbox Code Playgroud)

module1.py:

class fooBar():
    ....
class pew_pew_FooBarr()
    ....
...
Run Code Online (Sandbox Code Playgroud)

如何将所有类从module*添加到没有前缀的main(即使用它们像foo = fooBar(),而不是foo = my_modules.module1.fooBar()).

一个明显的决定是在main.py中写这样的东西:

from my_modules.module1 import *
from my_modules.module2 import *
from my_modules.module3 import *
...
Run Code Online (Sandbox Code Playgroud)

但是我不想在创建新模块N时更改main.py.那有解决方案吗?

我知道导入这样的类不是一个好主意,但我仍然对此感到好奇.

UPD:这个问题不同于这个问题在Python中加载一个文件夹中的所有模块,因为我的问题是加载没有命名空间的模块.

python import module

10
推荐指数
1
解决办法
2万
查看次数

导入目录中的所有类?

我找到了这个,但那不是我想要做的.

我想导入目录中所有文件中的所有类.基本上,我想替换这个:

from A import *
from B import *
from C import *
Run Code Online (Sandbox Code Playgroud)

有动态的东西,所以我__init__.py每次添加另一个文件时都没有继续编辑.


glob解决方案似乎是相当于

import A
import B
import C
Run Code Online (Sandbox Code Playgroud)

这根本不一样.

python

8
推荐指数
2
解决办法
7082
查看次数

列出命名空间包中的模块

我正在尝试让Python列出命名空间包中的所有模块.

我有以下文件结构:

cwd
|--a
|  `--ns
|     |--__init__.py
|     `--amod.py
|--b
|  `--ns
|     |--__init__.py
|     `--bmod.py
`--c
   `--ns
      |--__init__.py
      `--cmod.py
Run Code Online (Sandbox Code Playgroud)

每个都__init__.py通过以下行将它的包定义为命名空间包:

__import__('pkg_resources').declare_namespace(__name__)
Run Code Online (Sandbox Code Playgroud)

amod模块包含一个类A,bmod包含另一个类Bcmod包含C该类.

拥有干净的环境时会发生以下情况:

>>> import inspect, sys, glob
>>> sys.path += glob.glob('*')
>>> import ns
>>> inspect.getmembers(ns, inspect.ismodule)
[]
Run Code Online (Sandbox Code Playgroud)

如您所见,未列出模块.

现在,当我手动导入模块然后再次调用inspect时:

>>> inspect.getmembers(ns, inspect.ismodule)
[('amod', <module 'ns.amod' from 'a/ns/amod.pyc'>), ('bmod', <module 'ns.bmod' from 'b/ns/bmod.pyc'>), ('cmod', <module 'ns.cmod' from 'c/ns/cmod.pyc'>)]
Run Code Online (Sandbox Code Playgroud)

现在我想要在inspect不手动导入模块的情况下调用工作,那么我该如何实现呢?

python namespaces module package inspect

8
推荐指数
0
解决办法
1104
查看次数

用Python导入文件?

如何在执行期间导入Python文件?

我创建了3个文件a.py,b.pyc.py在路径中C:\Users\qksr\Desktop\Samples

这些文件包含如下所示的代码:

a.py

from c import MyGlobals

def func2():
    print MyGlobals.x
    MyGlobals.x = 2
Run Code Online (Sandbox Code Playgroud)

b.py

import a
from c import MyGlobals

def func1():
    MyGlobals.x = 1      

if __name__ == "__main__":
    print MyGlobals.x
    func1()
    print MyGlobals.x
    a.func2()
    print MyGlobals.x
Run Code Online (Sandbox Code Playgroud)

c.py

class MyGlobals(object):
    x = 0
Run Code Online (Sandbox Code Playgroud)

当我执行代码b.py时,抛出以下错误:

ImportError: No module named a
Run Code Online (Sandbox Code Playgroud)

我相信我的工作目录是默认的,所有文件a,b,c都是我在samples文件夹中创建的.

如何在Python中导入python文件?

python import file

6
推荐指数
3
解决办法
4万
查看次数

如何从给定目录和所有子目录动态导入所有 *.py 文件?

假设我在一个公共目录下有一堆 Python 文件,但其中可能存在任意数量的子目录:

/first/foo.py
/first/bar.py
/first/fizz/buzz.py
/first/numbers/one.py
/first/numbers/two.py
Run Code Online (Sandbox Code Playgroud)

我有一些任意文件,我想导入所有这些文件。手动,我可以这样做:

import first.foo
import first.bar
import first.fizz.buzz
import first.numbers.one
import first.numbers.two
Run Code Online (Sandbox Code Playgroud)

但相反,我希望能够做类似的事情:

import_everything_under('first')
Run Code Online (Sandbox Code Playgroud)

我知道已经出现了类似的问题:Recursively import all .py files from allfolders

但给出的答案和所谓的重复并不能回答这个问题。


这个问题被标记为可能重复:如何加载文件夹中的所有模块?

再说一遍,这并不能回答这个问题。该问题的答案不是递归的 - 它只会从直接目录导入项目,并且不包含子目录中的脚本,这是我的用例所需要的。

python python-3.x

6
推荐指数
1
解决办法
4926
查看次数

导入目录中的所有模块

有没有办法导入当前目录中的所有模块,并返回它们的列表?

例如,对于具有以下目录的目录:

  • mod.py
  • mod2.py
  • mod3.py

它会给你 [<module 'mod'>, <module 'mod2'>, <module 'mod3'>]

python module

5
推荐指数
1
解决办法
2680
查看次数

Python:从文件夹导入每个模块?

什么是最好的(阅读:最干净的)告诉Python从某个文件夹导入所有模块的方法?

我想让人们把他们的"mods"(模块)放在我的应用程序的一个文件夹中,我的代码应该在每次启动时检查并导入放在那里的任何模块.

我也不希望在导入的东西中添加额外的范围(不是"myfolder.mymodule.something",而是"东西")

python directory import

5
推荐指数
1
解决办法
8488
查看次数

试图在python中打印模块内的每个子模块

对不起,如果我在这期间弄错了一些事实,但我只编程了大约一年,因为我在我的学校开始了一个计算机课程,对不起,如果这个问题在我到处看之前已经得到了回答,但我不知道是什么搜索.最近我发现了一个游戏,您可以使用注入器将python代码注入其中,但找到代码的唯一方法是使用:

    import modulename
    print dir(modulename)
Run Code Online (Sandbox Code Playgroud)

然后打印dir(modulename.submodulename)

这会将该模块中的所有子模块打印到游戏的日志文件中.使用这种技术,我开发了一个脚本,在执行时将找到该目录中的所有子模块并将它们写入文件.

import modulename

myfile=open("name.txt","w")
myfile.write("modulename\n")

for a in dir(modulename):
    a="modulename"+"."+a
    for b in dir(a):
        b=a+"."+b
        for c in dir(b):
            c=b+"."+c
            if ".__" in c:
                pass
            elif "._" in c:
                pass
            else:
                myfile.write(c+"\n")
        if ".__" in b:
            pass
        if "._" in b:
            pass
        else:
            myfile.write(b+"\n")
    if ".__" in a:
        pass
    if "._" in a:
        pass
    else:
        myfile.write(a+"\n")

print "Done"
myfile.close()
Run Code Online (Sandbox Code Playgroud)

不幸的是,当运行"something.something"时,模块不存在.这是模块"随机"的示例,其中"random.weibullvariate"是一个真实的模块,但是经过第二个"."的任何东西.不在随机子模块中.

random.weibullvariate.title.translate
random.weibullvariate.title.upper
random.weibullvariate.title.zfill
random.weibullvariate.title
random.weibullvariate.translate.capitalize
random.weibullvariate.translate.center
random.weibullvariate.translate.count
random.weibullvariate.translate.decode
random.weibullvariate.translate.encode
random.weibullvariate.translate.endswith
random.weibullvariate.translate.expandtabs
random.weibullvariate.translate.find
random.weibullvariate.translate.format
random.weibullvariate.translate.index …
Run Code Online (Sandbox Code Playgroud)

python finder module

5
推荐指数
1
解决办法
5069
查看次数

为什么不支持按文件名导入?

我想导入 python 目录中的所有 python 模块,并遇到了以下代码片段:

for name in os.listdir("modules"):
    if name.endswith(".py"):
        module = name[:-3]   # remove extension name for convenience.
        globals()[module] = __import__(os.path.join("modules", name))
Run Code Online (Sandbox Code Playgroud)

程序输出:

ImportError: Import by filename is not supported.

如何按文件名导入文件?

python import python-import

5
推荐指数
0
解决办法
9859
查看次数

从文件夹动态导入所有模块

我知道存在这个问题,但它们不仅不起作用,而且也不完全是我想要的。我正在开发一款赛车游戏,想要动态加载文件夹中的所有赛道(它们存储为 .py 而不是 .json)。我不想知道曲目的名称,因为用户可以随意修改/添加它们。我只想导入他们的数据。因此,例如:

>tracks 
>>track0.py
>>track1.py
>>track2.py
>>track3.py
>>track4.py
Run Code Online (Sandbox Code Playgroud)

在每个轨道中,我都有这样的数据:

track_ground_data = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1],
    [1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1], …
Run Code Online (Sandbox Code Playgroud)

python import module python-import python-3.x

4
推荐指数
1
解决办法
8427
查看次数