python-remote SDK 多层目录的import,subprocess的使用就idea中环境变量
来源:互联网 发布:手机恶意坑人软件 编辑:程序博客网 时间:2024/06/02 07:02
python-remote SDK 多层目录的import,subprocess的使用就idea中环境变量
问题 1:多层目录中的import
1) 首先在idea编辑器(2017版)下
在idea编辑器下,上图图的目录结构(work space是study_and_test,下面有文件夹mod1和mod2,文件test.py),可以直接通过下面语句相互访问:
# test2.pyimport mod1.method1 as method1method1.output()# test1.pyimport mod2.method2 as method2method2.output()# test.pyimport mod1.method1 as method1import mod2.method2 as method2method1.output()method2.output()此时的文件夹mod1和mod2默认为一个包。直接可以通过“.”引用其下的.py文件。
2)在Linux环境下(ubuntu)
在Linux环境下test.py和mod1,mod2中py文件无法访问,同时mod1和mod2中的文件也不能相互访问,这个时候只需要在各个文件夹下新建一个__init__.py文件即可把文件夹变成包,就可以访问其中的文件了,正如下图:
但是此时依然有问题,在Linux环境下直接用python file指令运行的时候只能test.py文件访问mod1和mod2文件夹下的文件,而不能mod1和mod2两个文件夹中的文件相互访问。要想1)中的代码同样可以执行,必须在mod1和mod2中的文件里加上下面语句:
import syssys.path.append('..')加了上面的语句之后mod1和mod2中的文件就可以相互访问了,注意sys.path中存放的路径,就是import所查找的路径。这里加上“..”,表示当前目录的上一个目录,这种方式存在一个问题:python file(py文件)指令必须要在mod1或者mod2内部执行,如果是在study_and_test目录下,那么“..”表示的是study_and_test的上一个目录,所以加上绝对目录可能更好。
import syssys.path.append('/home/username/python_workspace/study_and_test')这里还有一个知识点:当你用python-remote SDK的时候,用idea输出的sys.path和直接在Linux上用python指令运行所输出的不一样,差别就是idea输出的多了一个work space就是这里的:
'/home/username/python_workspace/study_and_test'而且这个操作和idea中的菜单“Mark directory as”一致,换句话说,就是如果你Mark an directory as source root,那么这个directory就会出现在sys.path中,这是你import就可以找到相应的文件。并且通过这种方式import用户自定义的py文件,不需要加文件夹的名称。
问题 2: subprocess运行程序时的路径问题
这里的subprocess调用文件时默认的是从当前文件所在的位置开始调用,所以如果当前要调用的文件不在当前subprocess所在文件的文件夹下,就要就要支出被调用文件的绝对路径:
# test2.pyimport subprocesssubprocess.call(['python', '/home/username/python_workspace/study_and_test/mod1/method1.py'])
或者是通过其中的cwd 参数来指定工作路径:
# test2.pyimport subprocesssubprocess.call(['python', 'mod1/method1.py'], cwd='/home/jyzbyj/python_workspace/study_and_test')当然这里cwd='..'即可,但是也存在与问题1中类似的问题,所以指出绝对路径更好
问题 3: idea中的环境变量
首先需要明确的是idea中远程运行的环境变量和直接在Linux中运行的环境变量是不一样的。例如我在Linux中用户主目录下的.bashrc 文件内设置目录都不会在idea的结果中出现。因为idea获得的是Linux中原始的环境变量,所以要运行我们的程序,必须要在idea中加入我们用到的库的路径,也就是环境变量。
代码:
import subprocesssubprocess.call(["echo $PATH"], shell=True)
两个结果如图:
ubuntu下:
idea远程运行结果:
idea中得到的结果只是原始的环境变量,只是在ubuntu下运行中间的一部分,可能idea得到的root的环境变量。所以如果你要用TensorFlow,同时要用GPU,那么你就应该把CUDA的库目录加到idea的环境变量中,同时要注意的是idea不支持“$VARIABLE”的形式。你需要直接写绝对路径。如下图:
这样操作以后idea得到的环境变量就加上了用户加入的环境变量。
阅读全文
0 0
- python-remote SDK 多层目录的import,subprocess的使用就idea中环境变量
- python shell命令行中import多层目录下的模块
- Python中subprocess模块的使用
- Python中subprocess模块的使用
- Python中subprocess模块的使用
- python的subprocess模块使用
- python查看import的目录
- Python之subprocess模块的使用
- Python中import语句的使用教程
- python中import的一些使用技巧
- Python的subprocess模块
- python 的 subprocess模块
- python的subprocess
- Python脚本中import另外一个目录的脚本
- python中import 不同目录中的模块的方法
- 1.[Python]使用subprocess在新的进程中执行命令
- Python中import, from...import,import...as的区别
- python的subprocess与pipe
- ubuntu {DRDY ERR}.........
- CS229学习笔记之概率解释与局部加权线性回归
- LeetCode 56. Merge Intervals
- 当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢?
- java简单爬取网页内容实例
- python-remote SDK 多层目录的import,subprocess的使用就idea中环境变量
- POJ 3352 Road Construction
- 全排列的递归实现以及利用STL实现全排列
- [墙裂推荐]AndroidVideoCache:实现视屏播放边下边播
- hibernate问题解决 JDBC Driver class not found: oracle.jdbc.driver.OracleDriver
- 数据结构为:
- Hive库导出
- 基于PCA(主成分分析)的人脸识别
- 数据结构实验之查找三:树的种类统计
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
彩色衣服被染色怎么办
反胃恶心想吐怎么办
喝酒第二天胃痛怎么办
皮鞋挂了一道怎么办
皮鞋刮了一道怎么办
皮鞋被划破了怎么办
黑色皮鞋有划痕怎么办
煤气灶软管难装怎么办
喝完中药后恶心怎么办
喝完酒嘴巴苦怎么办
科目二考不过怎么办
电脑上没有图标怎么办
我怎么办 tara 百度云
工作中犯错了怎么办
工作中老实犯错怎么办
苹果手机发烫是怎么办
肚子胀气想吐怎么办
肚子有气想吐怎么办
如果有人污蔑你怎么办
被别人误会了怎么办
牵引颈椎后恶心怎么办
冬天脸特别干怎么办
小孩脖子淹了怎么办
打篮球扭到脚踝怎么办
打篮球伤到脚踝怎么办
身份证丢了怎么办补办
饥荒包包满了怎么办
饥荒水满了怎么办
饥荒湿度满了怎么办
饥荒背包满了怎么办
4g信号差怎么办
移动卡信号差怎么办
球兰叶子黄了怎么办
遇到校园欺凌该怎么办
鸡下软皮蛋怎么办
偷渡去缅甸死了怎么办
花草上面有虫子怎么办
暴风下载速度慢怎么办
想念死去的亲人怎么办
狗狗得了肠胃炎怎么办
月子里痔疮脱肛怎么办