Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Django导入错误os.path_Python_Django_Import_Importerror - Fatal编程技术网

Python/Django导入错误os.path

Python/Django导入错误os.path,python,django,import,importerror,Python,Django,Import,Importerror,我目前正在从事一个Django项目,其中包括读取不同文件格式的项目。每种格式都有自己的阅读脚本。要使用的格式取决于选择,这就是为什么我的admin_view.py会在运行时导入相应的脚本。这是通过imp完成的: module = imp.load_source('lidardaten.datatypes.' + datatype, PATH + datatype + '.py') 现在,我的问题是,当我试图在这些脚本中导入操作系统模块时,得到一个ImportError,并说“没有名为path的

我目前正在从事一个Django项目,其中包括读取不同文件格式的项目。每种格式都有自己的阅读脚本。要使用的格式取决于选择,这就是为什么我的admin_view.py会在运行时导入相应的脚本。这是通过imp完成的:

module = imp.load_source('lidardaten.datatypes.' + datatype, PATH + datatype + '.py')
现在,我的问题是,当我试图在这些脚本中导入操作系统模块时,得到一个ImportError,并说“没有名为path的模块”

Environment:

Request Method: POST
Request URL: http://lidardaten/django/lidardata/admin/upload/measurement/add/
Django Version: 1.2.5
Python Version: 2.4.3
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.admin',
 'lidardata.upload']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.middleware.csrf.CsrfResponseMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/lib/python2.4/site-packages/django/core/handlers/base.py" in get_response
  100.                     response = callback(request, *callback_args, **callback_kwargs)
File "/s1lidar/u1/mathias/www/lidardata/upload/admin_views.py" in add_measurement
  127.             module = imp.load_source('lidardaten.datatypes.' + datatype, PATH + datatype + '.py')
File "/s1lidar/u1/mathias/www/lidardata/datatypes/polly.py" in ?
  1. import os
File "/usr/lib64/python2.4/os.py" in ?
  133. from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,

Exception Type: ImportError at /admin/upload/measurement/add/
Exception Value: No module named path
无论是通过admin_view.py还是通过解释器导入操作系统模块,我都没有问题。在读取脚本中导入其他模块也可以,只要这些模块不尝试导入操作系统


是因为导入了带有
imp.load\u source
的脚本吗?其他可能性?任何建议都将不胜感激

与其使用
imp
,不如看看magic方法,它可以在不使用文件名的情况下导入模块。您的代码将以如下方式结束:

module_name = 'polly'
module = getattr(__import__('lidardaten.datatypes', globals(), locals(), [module_name]), module_name)

在导入
os
之前,您是否尝试过从
os.path
导入?在
admin\u views.py
中的第127行,数据类型和路径的值是多少?数据类型是一个字符串,类似于“polly”,取决于选择
PATH='/s1lidar/u1/mathias/www/lidardata/datatypes/'
如果将其硬编码为导入lidardata.datatypes.polly,是否也会发生同样的情况?现在这是一个想法,我应该早就知道了!这样很好,但我不想硬编码。。。