gpt4 book ai didi

python - 如何从不同的文件中导入 python 函数(在 Ubuntu 中)

转载 作者:行者123 更新时间:2023-12-04 18:27:46 29 4
gpt4 key购买 nike

我有一个名为 hero.py 的 python 文件指的是位于 views.py 中的其他 python 文件(这两个文件都存在于同一个文件夹中)。
hero.py代码 :


#!/usr/bin/env python3

from .views import main, returnSum, most_frequent, find_mine_site_view_id, get_user_Activity, initialise_analytics_reporting

list_of_mines = ['mine1', 'mine2', 'mine3']

start_date = 'yesterday'
end_date = 'yesterday'

main(list_of_mines, start_date, end_date)


使用 chmod +x hero.py 使文件可执行后并添加 #!/usr/bin/env python3hero.py 的顶部,运行时出现此错误 ./hero.py :
Traceback (most recent call last):
File "./hero.py", line 2, in <module>
from .views import main, returnSum, most_frequent, find_mine_site_view_id, get_user_Activity, initialise_analytics_reporting
ModuleNotFoundError: No module named '__main__.views'; '__main__' is not a package


我知道我的views.py 不是一个包,我只是想导入 views.py 中存在的函数

不确定它是否是Ubuntu的东西。

请帮忙

运行时 ls -la在两个文件都存在的文件夹中:
total 72
drwxrwxr-x 8 llewellyn llewellyn 4096 May 13 06:39 .
drwxrwxr-x 6 llewellyn llewellyn 4096 May 11 19:19 ..
drwxrwxr-x 3 llewellyn llewellyn 4096 May 7 08:52 .idea
-rw-rw-r-- 1 llewellyn llewellyn 0 May 7 07:21 __init__.py
drwxrwxr-x 2 llewellyn llewellyn 4096 May 13 06:18 __pycache__
-rwxrwxr-x 1 llewellyn llewellyn 86 May 12 17:39 admin.py
-rwxrwxr-x 1 llewellyn llewellyn 108 May 12 17:40 apps.py
drwxrwxr-x 3 llewellyn llewellyn 4096 May 7 09:04 config
drwxrwxr-x 3 llewellyn llewellyn 4096 May 9 11:34 migrations
-rwxrwxr-x 1 llewellyn llewellyn 2607 May 12 17:40 models.py
-rwxrwxr-x 1 llewellyn llewellyn 16146 May 13 06:17 views.py


我究竟做错了什么?

最佳答案

只需删除 View 前的点:

from views import main, returnSum, most_frequent, ...
# ^ here

编辑:
从子文件夹导入:
使用 .作为分隔符:
当文件位于这样的位置时:
someFolder
+-main.py <- file with import
`-the
`-path
`-to
`-module.py <- in this file is func1

做:
from the.path.to.module import func1
# imports func1 from file module.py
# then use like:
func1()

或者
from the.path.to import module
# imports whole module
# then use like:
module.func1()

或者
import the.path.to.module
# use:
the.path.to.module.func1()

或者
import the.path.to.module as mod
#imports the.path.to.module that is accessed by identifier mod
#so use it like
mod.func1()

可以结合 asfrom也:
from the.path.to import module as mod
#use:
mod.func1()

当路径为字符串或文件不是子文件夹时,可以这样做:
对于 Python 3.5+
import importlib.util
spec = importlib.util.spec_from_file_location("module.name", "/the/path/to/module.py")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
# then use like this:
module.func1()

对于 Python 2
import imp

module = imp.load_source('module.name', '/the/path/to/module.py')
module.func1()

关于python - 如何从不同的文件中导入 python 函数(在 Ubuntu 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61768223/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com