如何在不激活所述virtualenv的情况下在virtualenv中找到一个模块?(How to find a module in a virtualenv without activating said virtualenv?)
假设我有以下设置:
mkdir test && cd test virtualenv .venv source .venv/bin/activate pip install django mkdir mod1 touch mod1/__init__.py echo "a = 1" > mod1/mod2.py
这给了我:
test/.venv test/mod1/__init__.py test/mod1/mod2.py
我该如何写这个函数:
def get_module(module_name, root_path, virtualenv_path=None)
为了使这个工作:
project_root_path = "./test" project_virtualenv_path = "./test/.venv" get_module("mod1.mod2", project_root_path, project_virtualenv_path) get_module("django.contrib.auth", project_root_path, project_virtualenv_path)
假设我没有激活
./test/.venv
。我想这样做的原因是因为我正在开发一个vim插件,它将在import语句的python文件中实现
gf
功能。 我也试图支持virtualenvs。编辑:
此外,脚本不应通过添加或附加到sys.path来更改当前运行时。 这应该通过vim python绑定在vim内部运行,我不认为改变vim python运行时是一个好主意。
get_module
可以返回一个模块对象,也可以返回模块的路径,这正是我基本上要寻找的。Suppose I have the following setup:
mkdir test && cd test virtualenv .venv source .venv/bin/activate pip install django mkdir mod1 touch mod1/__init__.py echo "a = 1" > mod1/mod2.py
Which gives me:
test/.venv test/mod1/__init__.py test/mod1/mod2.py
How would I write this function:
def get_module(module_name, root_path, virtualenv_path=None)
In order for this to work:
project_root_path = "./test" project_virtualenv_path = "./test/.venv" get_module("mod1.mod2", project_root_path, project_virtualenv_path) get_module("django.contrib.auth", project_root_path, project_virtualenv_path)
Assuming I don't have
./test/.venv
activated.The reason I want to do this, is because I'm working on a vim plugin which would implement
gf
functionality in a python file on an import statement. I'm trying to support virtualenvs as well.EDIT:
Also, the script should not alter the current runtime, by adding or appending to sys.path. This should run inside vim, via the vim python bindings, and I don't think altering the vim python runtime would be a good idea.
get_module
could either return a module object, or the path to the module, which is what I'm basically looking for.
原文:https://stackoverflow.com/questions/11471566
最满意答案
从'inside'函数调用的mfilename返回函数路径和名称。
fullPath = mfilename('fullpath'); pathString = fileparts(fullPath); dataPath = [ pathString filesep 'data.csv']; csvwrite(dataPath, data(:));
mfilename called from 'inside' a function returns the function path and name.
fullPath = mfilename('fullpath'); pathString = fileparts(fullPath); dataPath = [ pathString filesep 'data.csv']; csvwrite(dataPath, data(:));
相关问答
更多-
dbstack返回一个包含完整函数调用堆栈的结构体。 要获取顶级功能的信息,请使用: S=dbstack fname=S(1).name dbstack returns a struct with the full function call stack. To get the information for the top level function, use: S=dbstack fname=S(1).name
-
MATLAB“发布”功能中的打印和图形控制顺序(Control order of printing and figures in MATLAB 'publish' function)[2023-04-22]
在循环中,在end之前,包含命令snapnow 。 这将强制发布例程在那里拍摄快照,然后,而不是等待循环结束收集所有图像。 Within the loop, just before the end, include the command snapnow. That will force the publishing routine to take the snapshot there and then, rather than waiting for the end of the loop to coll ... -
解决问题的方法可能是将assignin -function用于所有要在matlab基础工作区中传递给它的值的变量。 这样做只需使用 assignin('base','mdl',mdl) 将变量放在基础工作区中应该允许simulink查看它。 A solution to your problem might be to use the assignin-function to all the variable whose value you want to pass to simulink in your ...
-
通过Matlab控制VTK(controlling VTK through Matlab)[2023-04-20]
我有点工作了。 这是我做的: 运行GUI的matlab会话通过matlab.engine.shareEngine('shared_matlab_session')转换为共享会话,并在matlab_slider_pos变量中跟踪matlab GUI滑块位置 在初始化VTK对象之前,python脚本通过MatEng=matlab.engine.connect_matlab('shared_matlab_session')连接到会话 VTK渲染窗口为TimerEvent添加一个观察者,每0.1秒触发SliderS ... -
从'inside'函数调用的mfilename返回函数路径和名称。 fullPath = mfilename('fullpath'); pathString = fileparts(fullPath); dataPath = [ pathString filesep 'data.csv']; csvwrite(dataPath, data(:)); mfilename called from 'inside' a function returns the function path and name. f ...
-
函数rem()计算除法后的余数 。 在等式a = qd + r ,数q是商, r是余数。 商q是自然数,即0,1,2,3等,而余数r在0<=r您应该将所有获取x运算符更改为元素 。 这是通过添加来完成的. 在运营商之前。 所以*是矩阵乘法,而.*是元素乘法的元素。 对于^和/也是如此。 +和-总是元素方面的。 对于.* ,两个输入必须具有相同的大小和形状,或者其中一个是标量。 对于.^和./如果你知道你只处理数组操作(除非两个元素都是标量),最好总是使用它们。 x = 0:20:200; y = 1+((x./8).^(1/3))+((8./x).^(1/3)); plot(x,y) You should change all operator ...根据我的经验,最好的方法是使用VNC 。 您可以在主机上启动VNC服务器 ,然后使用VNC客户端从任何位置远程访问此桌面。 您可以在其他时间断开连接并重新连接,您的桌面仍然在那里。 此外,多个用户都可以进行不同的会话,或者可以访问同一个会话。 如果您不希望每个会话都运行完整的桌面,则可以将其配置为最小化。 为安全起见,建议使用SSH隧道或类似设备。 确切的程序会根据您的设置而有所不同,但谷歌的内容会以粗体显示。 我的设置是: VNC服务器 :Ubuntu linux主机上的vnc4server 。 VNC客 ...
在没有matlab环境的情况下在java类中运行matlab函数(Run matlab function in java class in absence of matlab environment)[2022-07-30]
最后我解决了我的问题。 解决方案一步一步如下: 写matlab函数: 函数y = makesqr(x) y = magic(x); 在matlab中使用deploytool并创建java包。 3.在Eclipse中创建新的java应用程序并添加主类。 导入javabuilde.jar和makesqr.jar: import com.mathworks.toolbox.javabuilder.MWArray; import com.mathworks.toolbox.javabuilder.MWCl ...要在matlab中返回变量,只需指定一个指定的返回参数即可。 例如:要返回我将使用的五号: function [foo] = gimmeFive() foo = 5; end 你的代码没有给你正确答案,因为你有一个错字: minuc_perc=minus/n; 应该 minus_perc=minus/n; 您可以通过利用find函数大大简化函数,如下所示:找到> 0的任何元素的indeces,计算它们。 plus = length(find(a > 0)); plus_perc = plus ...相关文章
更多- Fading Like a Flower - Roxette
- [转]So You Want To Be A Producer
- Becoming a data scientist
- Spring Data: a new perspective of data operations
- 7.trouble is a friend(Lenka)
- Create a Bootable MicroSD Card
- Drupal Forums instead of phpBB or vBulletin: A casestudy
- trouble is a friend
- could not find system property or JNDI
- Securing Solr on Tomcat access using a user account
最新问答
更多- 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
- 如何通过引用返回对象?(How is returning an object by reference possible?)
- 矩阵如何存储在内存中?(How are matrices stored in memory?)
- 每个请求的Java新会话?(Java New Session For Each Request?)
- css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
- 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
- xcode语法颜色编码解释?(xcode syntax color coding explained?)
- 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
- 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
- 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
- 西安哪有PLC可控制编程的培训
- 在Entity Framework中选择基类(Select base class in Entity Framework)
- 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
- 电脑二级VF有什么用
- Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
- 金华英语角.
- 手机软件如何制作
- 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
- 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
- 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
- Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
- 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
- python的访问器方法有哪些
- DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
- 在Ruby中对组合进行排序(Sorting a combination in Ruby)
- 网站开发的流程?
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。