首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/Django导入错误os.path

Python/Django导入错误os.path
EN

Stack Overflow用户
提问于 2011-07-20 20:03:46
回答 1查看 960关注 0票数 3

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

代码语言:javascript
复制
module = imp.load_source('lidardaten.datatypes.' + datatype, PATH + datatype + '.py')

现在,我的问题是,当我试图在这些脚本中导入os- ImportError时,我得到了一个ImportError,上面写着'No module named path‘。

代码语言:javascript
复制
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中还是通过解释器,导入os-module都没有问题。此外,在reading scripts中导入其他模块也很好--只要这些模块不会尝试导入os。

是不是因为用imp.load_source导入脚本?其他可能性?任何建议都将是摩天大楼-非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-20 20:21:39

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

代码语言:javascript
复制
module_name = 'polly'
module = getattr(__import__('lidardaten.datatypes', globals(), locals(), [module_name]), module_name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6761594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档