资讯专栏INFORMATION COLUMN

python中包引入遇到的问题

RayKr / 393人阅读

摘要:当进入命令行之后,我们运行时的运行环境实际是在目录下因此解析包就失败了。解决方法,扩展运行环境,把根目录引入运行环境

最近在用python的flask时候发现一点问题,代码组织如下

|-app
    |-__init__.py
    |-views.py
    |-operations.py
    |-xxx.py
|-run.py

按照python的约定,app作为一个包(package),引入到run.py当中

from app import app

在app/__init__.py中加入需要引入的包

from app import views,operations,xxx

按照这样的结构运行整个项目是ok的

operations.py 写了一些后台任务的逻辑,其中有一些对象是从__init__.py当中引入的

from app import app, db_session, alarm_user, logger

多带带运行operations.py来调试一部分代码时候发现了问题

if __name__ == "__main__":
    #print get_password()
    #print get_replication()
    print refresh_instance()

在PyCharm当中运行正常,但在命令行环境下无法运行,会出现如下错误:

#python operations.py
Traceback (most recent call last):
  File "operations.py", line 3, in 
    from app import app, db_session, alarm_user, logger
ImportError: No module named app

思索之后发现了玄机,PyCharm运行是以项目的根目录作为程序运行环境的。当进入命令行之后,我们运行operations.py时的运行环境实际是在app/目录下,因此解析app包就失败了。
解决方法,扩展python运行环境,把根目录引入运行环境

#!/bin/env python
# -*- coding: utf-8 -*-
import sys
sys.path.append("../")

from app import app, db_session, alarm_user, logger

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38010.html

相关文章

  • PyODPS 安装常见问题解决

    摘要:摘要本文将用户安装时遇到的常见问题列举如下,希望在遇到类似问题时可供借鉴。若不存在,确认此问题。安装后报这通常是由于遇到了依赖问题。上安装时报尝试使用上安装仍然报这是由于系统完整性保护导致的。此后在终端中运行此后再行安装。 摘要: 本文将用户安装 PyODPS 时遇到的常见问题列举如下,希望在遇到类似问题时可供借鉴。在参考下列步骤之前,请首先尝试卸载并重装 PyODPS。卸载的步骤为执...

    I_Am 评论0 收藏0
  • Python-爬虫工程师-面试总结

    摘要:内存池机制提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。为了加速的执行效率,引入了一个内存池机制,用于管理对小块内存的申请和释放。 注:答案一般在网上都能够找到。1.对if __name__ == main的理解陈述2.python是如何进行内存管理的?3.请写出一段Python代码实现删除一个list里面的重复元素4.Python里面如何拷贝一个对象?...

    antz 评论0 收藏0
  • python:容器、迭代器、生成器 简单介绍

    摘要:容器迭代器生成器简单介绍提供了多种数据类型来存放数据项。如下迭代器可以被函数调用并不断返回下一个值的对象为迭代器,。 python:容器、迭代器、生成器 简单介绍 python提供了多种数据类型来存放数据项。之前已经介绍了几个python中常用的容器,分别是列表list、元组tuple、字典dict和集合set。这几种数据结构在Python中是非常重要的部分,尤其是各自的特性部分。掌握...

    xbynet 评论0 收藏0
  • crontab执行失败多种原因

    摘要:是下执行定时任务的常见方法。在以上的前提下,可能是如下的几个原因,导致了不能正常执行。原因在于,中并没有将加入环境变量。执行时找不到该文件。 crontab是Linux下执行定时任务的常见方法。这里总结一下自己遇到的或者被问到的相关问题, 诸如为什么crontab执行失败, 为什么crontab没有执行。 在分析之前, 我们先确认一个前提: 操作命令本身的执行并没有问题, 在shell...

    honmaple 评论0 收藏0
  • 编程界“头牌”名媛:Python,14个与数据科学“暧昧情事”

    摘要:安装安装用于数据科学的的最佳方法是使用发行版。但这只是展示了构建数据科学问题的不同方式中的机器学习这是一个重要的主题,机器学习正在风靡世界,是数据科学家工作的重要组成部分。 作为编程界的头牌名媛,Python平易近人的态度和精明婉约的灵动深得各个大佬欢心。比如:人工智能、web开发、爬虫、系统运维、数据分析与计算等等。这几位风流多金的行业精英随便哪个都能逆转未来。 本文为你精心准备了一...

    Labradors 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<