-
2021-11-18 15:06:15
简介
java中使用jar包来封装有用的功能,然后将其分发到maven仓库中,供其他人使用。同样的在dart中也有类似的概念叫做packages。packages就是可以用来共享的软件包,可以包含libraries和tools。
你可以在pub.dev网站中查到dart中所有的共享packages的信息。 那么怎么在一个dart项目中使用这些packages呢?
pubspec.yaml
简单点讲,一个dart的package就是包含pubspec.yaml的目录。pubspec.yaml是一个描述文件,用来表明该package的元信息,包括当前package的名字,版本号和依赖信息等。
要想使用pub.dev上的packages,只需要在pubspec.yaml引入对应的依赖即可。
我们举个例子:
name: app2 description: a demo app version: 1.0.0+1 environment: sdk: ">=2.7.0 <3.0.0" dependencies: image_picker: ^0.6.7+22 video_player: ^0.10.12+5
这里我们的引入了两个依赖包,分别是image_picker和video_player。
get packages
当我们修改了pubspec.yaml之后,其实对应的package并没有下载到本地来,还需要通过下面的命令来下载对应的packages:
cd <path-to-my_app> dart pub get
dart pub get会根据pubspec.yaml中配置的内容下载对应的包,并放置在系统缓存中。
在Mac或者Linux系统中,这个缓存目录的地址是:~/.pub-cache,在windows中这个目录地址是:%LOCALAPPDATA%\Pub\Cache。
当然,你也可以通过设置PUB_CACHE来更换这个地址。
如果你依赖的包又依赖其他的包的话,其他依赖包也会被下载下来。
当下载完依赖包之后,dart会在 .dart_tool/目录中创建一个 package_config.json文件,用来表示当前项目和系统缓存包的映射关系。
使用packages
万事俱备,只欠东风。现在包也有了,剩下就是使用了。
使用libary可以用关键字import。如果是dart SDK中的包,则以dart:开头:
import 'dart:html';
如果是第三方包,则以package: 开头:
import 'package:test/test.dart';
引入的libary还可以被重命名:
import 'package:lib1/lib1.dart'; import 'package:lib2/lib2.dart' as lib2; // Uses Element from lib1. Element element1 = Element(); // Uses Element from lib2. lib2.Element element2 = lib2.Element();
还可以使用show和hide引入部分library:
// Import only foo. import 'package:lib1/lib1.dart' show foo; // Import all names EXCEPT foo. import 'package:lib2/lib2.dart' hide foo;
默认情况下,引入的包是初始加载的,如果某些包特别大,或者你想要在使用的时候再进行加载,则可以使用deferred关键字进行延时加载:
import 'package:greetings/hello.dart' deferred as hello;
在使用的时候,需要显示调用loadLibrary() 方法,来加载对应的library:
Future<void> greet() async { await hello.loadLibrary(); hello.printGreeting(); }
升级依赖
在第一次运行dart pub get 之后,dart会创建一个pubspec.lock文件,用来锁定依赖包的版本号,如果是在团队协作中,这个lock文件是特别有用的,它可以保证团队中所有成员使用的都是同一个版本的依赖包。
当你想升级对应的依赖的时候,可以使用dart pub upgrade命令,对依赖包进行升级。
dart pub upgrade会根据最新的可用包来生成最新的lock文件。
当然,你也可以指定升级某个特定的依赖包:
dart pub upgrade image_picker
要想查看最新依赖包的最新版本,可以使用:
dart pub outdated
总结
以上就是dart中packages的使用。
本文已收录于 http://www.flydean.com/09-dart-packages/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
更多相关内容 -
changed-packages-github-action:Github操作,使软件包受变更集影响
2021-04-09 16:40:09更改包装 获取有关具有更改的软件包以及发行计划中包含的软件包的信息。 关于 此操作与版本控制工具一起使用,可让您根据软件包是否已更改或发行计划中是否... uses : caffco/changed-packages-github-action@v1.0.0 -
anaconda安装pytorch时报错PackagesNotFoundError: The following packages are not available from ...
2020-12-22 02:07:06PackagesNotFoundError: The following packages are not available from current channels: 原因是因为我将安装源设置为清华镜像,而在2019年4月份anaconda的清华镜像不能用了: 所以我们需要手动下载whl文件... -
manage-packages:Atom软件包,用于将已安装的软件包与文件同步
2021-05-01 22:58:24一个软件包,用于通过点文件存储库管理软件包,例如,通过将已安装的软件包列表同步到~/.atom/packages.cson 。 它会自动创建并安装~/.atom/packages.cson所有软件包,并~/.atom/packages.cson文件中的更改。 ... -
robodo-include-local-packages:在您的meteor 应用程序`packages` 文件夹中包含私有包
2021-06-02 20:57:51robodo:include-local-packages 在您的meteor 应用程序packages中包含私有包,以便轻松部署到 scalingo。 这是一个 debugOnly 包,它不会编译为生产代码。 安装 meteor add robodo:include-local-packages 将 ... -
Packages.dmg pkg打包工具
2018-06-04 09:24:08macOS 平台 pkg 打包工具 -
NugetPackages下载地址
2018-10-18 14:45:36实际操作中用到的NugetPackages 网盘链接 -
global-packages:列出全局节点包
2021-02-03 18:58:22npm install --save global-packages 之后,加载它: const globalPackages = require ( 'global-packages' ) let packages try { packages = await globalPackages ( ) } catch ( err ) { console . error ( ... -
Visual C++ Redistributable Packages for Visual Studio 2013(x64,x86两个)
2019-01-21 10:55:24Visual C++ Redistributable Packages for Visual Studio 2013包含 (x64,x86两个)vcredist_x64.exe和vcredist_x86.exe -
openwrt-packages_action
2021-04-19 20:54:46openwrt-packages国内常用OpenWrt软件包源码合集,每天自动更新,使用lean源码openwrt-18.06lean源码请使用packages分支使用方式(三选一):还是建议按需取用,不然碰到依赖问题不太好解决先cd进package目录,然后... -
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied问题解决
2022-04-01 11:18:40Windows Anaconda python3.6 安装依赖包发生错误如下 ...ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: 'D:\\1Atemp\\pip-unpack-dt9854cd\\certifi-2020.Windows Anaconda python3.6 安装依赖包发生错误如下
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --user
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: 'D:\\1Atemp\\pip-unpack-dt9854cd\\certifi-2020.6.20-py2.py3-none-any.whl' Check the permissions.
ps1:此前已在命令后添加--user,依然报错
ps2:此前已用管理员运行anaconda,依然报错
解决方法:修改对应文件夹权限(D:\\1Atemp\\)
step1:找到对应文件夹(D:\\1Atemp\\)右键→属性→安全→高级→更改→在输入对象名称框内填写Administrators→确定→替换子容器和对象的所有者
step2:找到对应文件夹(D:\\1Atemp\\)右键→属性→安全→高级→添加→在输入对象名称框内填写Users→添加“Users”的“完全控制”权限→勾选“使用可从此对象继承的权限替换所有子对象的权限”→确定
成功安装如下
(D:\Anaconda3) D:\Anaconda3>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --user Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting certifi==2020.6.20 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5e/c4/6c4fe722df5343c33226f0b4e0bb042e4dc13483228b4718baf286f86d87/certifi-2020.6.20-py2.py3-none-any.whl (156 kB) |██████████▌ | 51 kB 544 kB/s eta 0:00:01 |████████████▌ | 61 kB 653 kB/s eta 0:00: |██████████████▌ | 71 kB 762 kB/s eta 0:0 |█████████████████ | 81 kB 871 kB/s eta 0 |███████████████████ | 92 kB 980 kB/s eta |█████████████████████ | 102 kB 1.1 MB/s |███████████████████████ | 112 kB 1.1 MB/ |█████████████████████████ | 122 kB 1.1 M |███████████████████████████ | 133 kB 1.1 |█████████████████████████████ | 143 kB 1 |███████████████████████████████▌| 153 k |████████████████████████████████| 156 kB 1.1 MB/s Requirement already satisfied: wincertstore==0.2 in d:\anaconda3\lib\site-packages (from -r requirements.txt (line 2)) (0.2) Installing collected packages: certifi Successfully installed certifi-2020.6.20
具体报错如下
(D:\Anaconda3) D:\Anaconda3>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --user Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting certifi==2020.6.20 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5e/c4/6c4fe722df5343c33226f0b4e0bb042e4dc13483228b4718baf286f86d87/certifi-2020.6.20-py2.py3-none-any.whl (156 kB) ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: 'D:\\1Atemp\\pip-unpack-dt9854cd\\certifi-2020.6.20-py2.py3-none-any.whl' Check the permissions. Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 34, in global_tempdir_manager yield File "d:\anaconda3\lib\contextlib.py", line 365, in __exit__ if cb(*exc_details): File "d:\anaconda3\lib\contextlib.py", line 284, in _exit_wrapper return cm_exit(cm, *exc_details) File "d:\anaconda3\lib\contextlib.py", line 88, in __exit__ next(self.gen) File "d:\anaconda3\lib\site-packages\pip\_internal\req\req_tracker.py", line 51, in get_requirement_tracker yield tracker File "d:\anaconda3\lib\contextlib.py", line 380, in __exit__ raise exc_details[1] File "d:\anaconda3\lib\contextlib.py", line 365, in __exit__ if cb(*exc_details): File "d:\anaconda3\lib\contextlib.py", line 284, in _exit_wrapper return cm_exit(cm, *exc_details) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 156, in __exit__ self.cleanup() File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 173, in cleanup rmtree(self._path) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 326, in wrapped_f return self(f, *args, **kw) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 406, in __call__ do = self.iter(retry_state=retry_state) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 362, in iter raise retry_exc.reraise() File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 195, in reraise raise self.last_attempt.result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 425, in result return self.__get_result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result raise self._exception File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 409, in __call__ result = fn(*args, **kwargs) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\misc.py", line 126, in rmtree shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler) File "d:\anaconda3\lib\shutil.py", line 494, in rmtree return _rmtree_unsafe(path, onerror) File "d:\anaconda3\lib\shutil.py", line 376, in _rmtree_unsafe onerror(os.listdir, path, sys.exc_info()) File "d:\anaconda3\lib\shutil.py", line 374, in _rmtree_unsafe names = os.listdir(path) PermissionError: [WinError 5] 拒绝访问。: 'D:\\1Atemp\\pip-req-tracker-m_yt1iwu' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "d:\anaconda3\lib\contextlib.py", line 365, in __exit__ if cb(*exc_details): File "d:\anaconda3\lib\contextlib.py", line 284, in _exit_wrapper return cm_exit(cm, *exc_details) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 156, in __exit__ self.cleanup() File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 173, in cleanup rmtree(self._path) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 326, in wrapped_f return self(f, *args, **kw) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 406, in __call__ do = self.iter(retry_state=retry_state) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 362, in iter raise retry_exc.reraise() File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 195, in reraise raise self.last_attempt.result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 425, in result return self.__get_result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result raise self._exception File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 409, in __call__ result = fn(*args, **kwargs) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\misc.py", line 126, in rmtree shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler) File "d:\anaconda3\lib\shutil.py", line 494, in rmtree return _rmtree_unsafe(path, onerror) File "d:\anaconda3\lib\shutil.py", line 376, in _rmtree_unsafe onerror(os.listdir, path, sys.exc_info()) File "d:\anaconda3\lib\shutil.py", line 374, in _rmtree_unsafe names = os.listdir(path) PermissionError: [WinError 5] 拒绝访问。: 'D:\\1Atemp\\pip-unpack-dt9854cd' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "d:\anaconda3\lib\contextlib.py", line 365, in __exit__ if cb(*exc_details): File "d:\anaconda3\lib\contextlib.py", line 284, in _exit_wrapper return cm_exit(cm, *exc_details) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 156, in __exit__ self.cleanup() File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 173, in cleanup rmtree(self._path) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 326, in wrapped_f return self(f, *args, **kw) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 406, in __call__ do = self.iter(retry_state=retry_state) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 362, in iter raise retry_exc.reraise() File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 195, in reraise raise self.last_attempt.result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 425, in result return self.__get_result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result raise self._exception File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 409, in __call__ result = fn(*args, **kwargs) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\misc.py", line 126, in rmtree shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler) File "d:\anaconda3\lib\shutil.py", line 494, in rmtree return _rmtree_unsafe(path, onerror) File "d:\anaconda3\lib\shutil.py", line 376, in _rmtree_unsafe onerror(os.listdir, path, sys.exc_info()) File "d:\anaconda3\lib\shutil.py", line 374, in _rmtree_unsafe names = os.listdir(path) PermissionError: [WinError 5] 拒绝访问。: 'D:\\1Atemp\\pip-install-40w0qb34' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "d:\anaconda3\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "d:\anaconda3\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "D:\Anaconda3\Scripts\pip.exe\__main__.py", line 9, in <module> File "d:\anaconda3\lib\site-packages\pip\_internal\cli\main.py", line 70, in main return command.main(cmd_args) File "d:\anaconda3\lib\site-packages\pip\_internal\cli\base_command.py", line 98, in main return self._main(args) File "d:\anaconda3\lib\contextlib.py", line 88, in __exit__ next(self.gen) File "d:\anaconda3\lib\site-packages\pip\_internal\cli\command_context.py", line 20, in main_context yield File "d:\anaconda3\lib\contextlib.py", line 380, in __exit__ raise exc_details[1] File "d:\anaconda3\lib\contextlib.py", line 99, in __exit__ self.gen.throw(type, value, traceback) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 70, in tempdir_registry yield _tempdir_registry File "d:\anaconda3\lib\contextlib.py", line 365, in __exit__ if cb(*exc_details): File "d:\anaconda3\lib\contextlib.py", line 284, in _exit_wrapper return cm_exit(cm, *exc_details) File "d:\anaconda3\lib\contextlib.py", line 99, in __exit__ self.gen.throw(type, value, traceback) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 36, in global_tempdir_manager _tempdir_manager = old_tempdir_manager File "d:\anaconda3\lib\contextlib.py", line 380, in __exit__ raise exc_details[1] File "d:\anaconda3\lib\contextlib.py", line 365, in __exit__ if cb(*exc_details): File "d:\anaconda3\lib\contextlib.py", line 284, in _exit_wrapper return cm_exit(cm, *exc_details) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 156, in __exit__ self.cleanup() File "d:\anaconda3\lib\site-packages\pip\_internal\utils\temp_dir.py", line 173, in cleanup rmtree(self._path) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 326, in wrapped_f return self(f, *args, **kw) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 406, in __call__ do = self.iter(retry_state=retry_state) File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 362, in iter raise retry_exc.reraise() File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 195, in reraise raise self.last_attempt.result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 425, in result return self.__get_result() File "d:\anaconda3\lib\concurrent\futures\_base.py", line 384, in __get_result raise self._exception File "d:\anaconda3\lib\site-packages\pip\_vendor\tenacity\__init__.py", line 409, in __call__ result = fn(*args, **kwargs) File "d:\anaconda3\lib\site-packages\pip\_internal\utils\misc.py", line 126, in rmtree shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler) File "d:\anaconda3\lib\shutil.py", line 494, in rmtree return _rmtree_unsafe(path, onerror) File "d:\anaconda3\lib\shutil.py", line 376, in _rmtree_unsafe onerror(os.listdir, path, sys.exc_info()) File "d:\anaconda3\lib\shutil.py", line 374, in _rmtree_unsafe names = os.listdir(path) PermissionError: [WinError 5] 拒绝访问。: 'D:\\1Atemp\\pip-ephem-wheel-cache-90todcuy'
-
Windows10使用caffe深度学习架构中所需要下载的NugetPackages依赖包
2018-03-22 13:55:20WIndows下使用caffe深度学习框架,编译caffe时会让下载一个接近一个G的NugetPackages依赖包,速度十分慢,而且会出现失败的情况,在此分享我用VS2013编译caffe时下载好的NugetPackages依赖包(温馨提示:caffe编译... -
LINUX系统使用rpm命令安装Packages
2013-10-21 11:21:02CentOS 6.0以后,这些rpm都是在光盘目录下的Packages目录下,6.0以前好像是在Server文件夹下 -
gh-packages:像gh-pages一样,但要打包!
2021-05-27 09:46:17gh-packages会自动使用您的项目副本创建一个新的分支gh-packages ,并将其发布在NPM上。 您可以使用-c或--command标志在发布软件包之前执行定制命令: gh-packages -c "<custom>" 安装 npm i -g gh-packages ... -
Visual C++ Redistributable Packages for Visual Studio 2013(64bit)
2014-11-06 13:57:31Visual C++ Redistributable Packages for Visual Studio 2013 -
Python site-packages目录的位置
2022-05-13 20:44:281、运行时会列出全局站点软件包(“dist-packages”)目录sys.path: python -m site USER_BASE 和USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径。 user_site其实就是个人的site-...网站包目录有两种类型,全局目录和每个用户目录。
1、运行时会列出全局站点软件包(“ dist-packages”)目录
sys.path
:python -m site
USER_BASE 和USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径。
user_site其实就是个人的site-packages默认安装路径了要在Python代码中
getsitepackages
从站点模块运行更简洁的列表,请执行以下操作:python -c 'import site; print(site.getsitepackages())'
注意:使用virtualenvs时,getsitepackages不可用
,但是sys.path
从上面将正确列出virtualenv的site-packages目录。在Python 3中,您可以改为使用sysconfig模块
:python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'
2、在每个用户站点包目录是其中的Python安装本地套餐:
python -m site --user-site
如果这指向一个不存在的目录,请检查Python的退出状态并查看
python -m site --help
说明。提示:运行
pip list --user
或pip freeze --user
为您提供每个用户站点软件包的所有已安装列表。pip install指定安装目录
pip install一般会有默认的安装目录,可以通过
python -m site
进行查看,当然也可以对默认目录进行修改通过pip install --target=path_name package_name
-
安装 - 如何找到Python site-packages目录的位置?
2020-12-17 03:30:12安装 - 如何找到Python site-packages目录的位置?如何找到site-packages目录的位置?18个解决方案618 votes>>> import site; site.getsitepackages()['/usr/local/lib/python2.7/dist-packages', '/usr/...安装 - 如何找到Python site-packages目录的位置?
如何找到site-packages目录的位置?
18个解决方案
618 votes
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
(或只是site.getsitepackages()[0]的第一项)
eudoxos answered 2018-12-27T03:42:25Z
298 votes
从“如何安装Django”文档(虽然这不仅仅是Django安装有用) - 从shell执行以下命令:
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
格式化为可读性(而不是用作单行),如下所示:
from distutils.sysconfig import get_python_lib
print(get_python_lib())
Daryl Spitzer answered 2018-12-27T03:42:53Z
202 votes
有两种类型的站点包目录,全局和每用户。
运行时,全局站点包(“dist-packages”)目录列在pip list --user中:
pip list --user
有关更简洁的列表,请从Python代码中的站点模块运行pip list --user:
pip list --user
注意:由于virtualenvs的getitepackages不可用,但上面的pip list --user将正确列出virtualenv的site-packages目录。
每个用户的站点包目录(PEP 370)是Python安装本地包的地方:
pip list --user
如果这指向不存在的目录,请检查Python的退出状态,并参阅pip list --user以获取解释。
提示:运行pip list --user或pip freeze --user会为您提供所有已安装的每个用户站点包的列表。
Peterino answered 2018-12-27T03:42:03Z
97 votes
对于Ubuntu,
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
...是不正确的。
它会指向/usr/local/lib/pythonX.X/dist-packages
此文件夹仅包含操作系统自动安装的程序包以供程序运行。
在ubuntu上,包含通过setup_tools \ easy_install \ pip安装的软件包的site-packages文件夹将在/usr/local/lib/pythonX.X/dist-packages
如果用例与安装或读取源代码相关,则第二个文件夹可能更有用。
如果您不使用Ubuntu,您可能会安全地将第一个代码框复制粘贴到终端中。
David Hollander answered 2018-12-27T03:43:52Z
63 votes
这对我有用:
python -m site --user-site
Ramashri answered 2018-12-27T03:44:13Z
22 votes
假设你已经安装了'django'软件包。 导入它并输入dir(django)。 它将向您展示该模块的所有功能和属性。 输入python解释器 -
>>> import django
>>> dir(django)
['VERSION', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_version']
>>> print django.__path__
['/Library/Python/2.6/site-packages/django']
如果你安装了mercurial,你可以做同样的事情。
这是雪豹。 但我认为它也应该起作用。
Sumod answered 2018-12-27T03:44:47Z
21 votes
正如其他人所说,site-packages具有相关设置:
import distutils.sysconfig
print distutils.sysconfig.get_python_lib()
...虽然默认的site-packages做了一些更粗糙的事情,在下面解释:
import sys, os
print os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages'])
(它还添加了site-packages并为sys.exec_prefix添加了两个路径,如果常量不同的话)。
那就是说,背景是什么? 你不应该直接搞乱你的site-packages; setuptools / distutils将用于安装,并且您的程序可能在virtualenv中运行,其中您的pythonpath完全是用户本地的,因此它不应该直接使用系统站点包。
Charles Duffy answered 2018-12-27T03:45:28Z
15 votes
在基于Debian的系统中安装python安装的本机系统包可以在以下位置找到:
/usr/lib/python2.7/dist-packages/
在OSX中 - pip
通过使用这个小代码:
from distutils.sysconfig import get_python_lib
print get_python_lib()
但是,可以在以下位置找到通过pip安装的软件包列表:
在/ usr/ local / bin目录/
或者可以简单地编写以下命令来列出python包所在的所有路径。
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
注意:位置可能会因您的操作系统而异,例如在OSX中
>>> import site; site.getsitepackages()
['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']
fnatic_shank answered 2018-12-27T03:46:33Z
13 votes
所有答案(或:反复重复的相同答案)都不充分。 你想要做的是:
from setuptools.command.easy_install import easy_install
class easy_install_default(easy_install):
""" class easy_install had problems with the fist parameter not being
an instance of Distribution, even though it was. This is due to
some import-related mess.
"""
def __init__(self):
from distutils.dist import Distribution
dist = Distribution()
self.distribution = dist
self.initialize_options()
self._dry_run = None
self.verbose = dist.verbose
self.force = None
self.help = 0
self.finalized = 0
e = easy_install_default()
import distutils.errors
try:
e.finalize_options()
except distutils.errors.DistutilsError:
pass
print e.install_dir
最后一行显示安装目录。 适用于Ubuntu,而上述则不适用。 不要问我关于windows或其他dists的问题,但是因为它与easy_install默认使用的dir完全相同,所以在easy_install工作的地方(因此,无处不在,甚至是mac)都可能是正确的。 玩得开心。 注意:原始代码中有许多脏话。
cheater answered 2018-12-27T03:47:01Z
11 votes
附注:当存在多个site-packages目录时(根据本文的建议),建议的解决方案(distutils.sysconfig.get_python_lib())不起作用。 它只返回主要的site-packages目录。
唉,我也没有更好的解决方案。 Python似乎没有跟踪site-packages目录,只跟踪它们中的包。
Vladimir Vagaytsev answered 2018-12-27T03:47:29Z
9 votes
这对我有用。它将为您提供dist-packages和site-packages文件夹。如果文件夹不在Python的路径上,则不会无论如何,你做得很好。
import sys;
print [f for f in sys.path if f.endswith('packages')]
输出(Ubuntu安装):
['/home/username/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
just_an_old_guy answered 2018-12-27T03:47:57Z
8 votes
已经提到get_python_lib函数的附加说明:在某些平台上,不同的目录用于特定于平台的模块(例如:需要编译的模块)。 如果您将plat_specific=True传递给该函数,则会获得特定于平台的软件包的站点软件包。
Armin Ronacher answered 2018-12-27T03:48:19Z
7 votes
from distutils.sysconfig import get_python_lib
print get_python_lib()
Florian Bösch answered 2018-12-27T03:48:35Z
7 votes
这应该适用于虚拟环境中的所有分布,因为它具有“低技术”性质。 os模块总是驻留在'site-packages'的父目录中
import os; print(os.path.dirname(os.__file__) + '/site-packages')
要将dir更改为site-packages目录,我使用以下别名(在* nix系统上):
alias cdsp='cd $(python -c "import os; print(os.path.dirname(os.__file__))"); cd site-packages'
Pyramid Newbie answered 2018-12-27T03:49:03Z
2 votes
回答旧问题。 但是为此使用ipython。
pip install ipython
ipython
import imaplib
imaplib?
这将给出关于imaplib包的以下输出 -
Type: module
String form:
File: /usr/lib/python2.7/imaplib.py
Docstring:
IMAP4 client.
Based on RFC 2060.
Public class: IMAP4
Public variable: Debug
Public functions: Internaldate2tuple
Int2AP
ParseFlags
Time2Internaldate
Sahil Agarwal answered 2018-12-27T03:49:32Z
2 votes
现代stdlib方式使用sysconfig模块,可在2.7和3.2+版本中使用。 Python目前使用八个路径(docs):
stdlib:包含非特定于平台的标准Python库文件的目录。
platstdlib:包含特定于平台的标准Python库文件的目录。
platlib:特定于站点的平台特定文件的目录。
purelib:特定于站点的非平台特定文件的目录。
include:非平台特定头文件的目录。
platinclude:特定于平台的头文件的目录。
scripts:脚本文件的目录。
data:数据文件的目录。
在大多数情况下,发现此问题的用户会对'purelib'路径感兴趣(在某些情况下,您可能也对'platlib'感兴趣)。 与目前接受的答案不同,这种方法不应该是错误的,这取决于你是否激活了virtualenv。
在系统级(这是mac OS上的Python 3.7.0):
>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'
有了一个venv,你会得到这样的东西
>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/private/tmp/.venv/lib/python3.7/site-packages'
shell脚本也可用于显示这些详细信息,您可以通过执行sysconfig作为模块来调用:
python -m sysconfig
注意:sysconfig(源代码)不要与这里的其他几个答案中提到的distutils.sysconfig子模块(源)相混淆。 这是一个完全不同的模块,它缺少上面讨论的get_paths功能。
wim answered 2018-12-27T03:51:18Z
0 votes
对于我正在处理的项目,我必须做一些稍微不同的事情:找到相对于基本安装前缀的相对site-packages目录。 如果site-packages文件夹在/Lib/site-packages中,我想要/lib/python3.6/site-packages部分。 事实上,我遇到site-packages在/usr/lib64中的系统,并且接受的答案对这些系统不起作用。
与骗子的答案类似,我的解决方案深入探究了Distutils的内涵,找到了实际在/Lib/site-packages内部传递的路径。想到我不希望任何人再次想到这一点,真是太痛苦了。。
import sys
import os
from distutils.command.install import INSTALL_SCHEMES
if os.name == 'nt':
scheme_key = 'nt'
else:
scheme_key = 'unix_prefix'
print(INSTALL_SCHEMES[scheme_key]['purelib'].replace('$py_version_short', (str.split(sys.version))[0][0:3]).replace('$base', ''))
这应该打印像/Lib/site-packages或/lib/python3.6/site-packages。
MultipleMonomials answered 2018-12-27T03:51:53Z
0 votes
如果已经添加到PYTHONPATH,您也可以执行类似的操作
import sys
print('\n'.join(sys.path))
filtfilt answered 2018-12-27T03:52:15Z
-
unity Resolving Packages卡主
2022-03-13 16:02:16打开别人的项目经常会遇到 Resolving Packages卡主。 这有可能是你用的 Unity 版本,与项目的Unity 版本不一致导致的,导致 package 版本不一致。 下载不到 package. 解决 打开Unity/Packages目录的 manifest.json ... -
vue2 卸载 uninstall vue-meta 报错 up to date, audited 1389 packages in 10s 96 packages are looking ...
2022-04-14 00:31:06vue2 卸载 uninstall vue-meta 报错 up to date, audited 1389 packages in 10s 96 packages are looking for -
JavatarPackages:适用于 Sublime 和 Atom 的 Javatar 插件的 Javatar Packages 存储库
2021-07-03 16:45:08适用于 Sublime 和 Atom 的 Javatar 插件的 Javatar Packages 存储库 创建您自己的 Javatar 包 克隆或下载 JavatarDoclet 存储库 编译所有 JavatarDoclet 源代码 修改makefile以适合您的包 使用当前目录中的源代码... -
在执行Anaconda命令的时候遇到The following packages are causing the inconsistency:
2021-09-26 20:33:15在执行Anaconda命令的时候遇到The following packages are causing the inconsistency: (base) liuchang@PauldeMacBook-Pro ~ conda install anaconda Collecting package metadata (current_repodata.... -
You can remove cached packages by executing ‘yum clean packages‘. Error: GPG check FAILED
2022-04-20 12:35:13在网上找了很多方法都没啥用,亲测有效 解决方案如下: dnf install qt5-qtwebkit-devel.x86_64 --nogpgcheck yum -y install mysql-community-server 一切OK -
Unity的packages管理机制
2022-01-28 10:10:07Unity新安装的packages保存目录 C:\ProgramData\Unity\cache\packages\packages.unity.com 内置的packages保存目录 为版本安装目录\Editor\Data\Resources\PackageManager\BuiltInPackages C:\Program Files\Unity... -
error: cannot open Packages database in /var/lib/rpm
2022-01-20 15:57:37db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index using db5 - (-30973) error: cannot open Packages database in /var/... -
Error in install.packages : Updating loaded packages WARNING: Rtools is required to build R packages
2021-04-27 14:25:53Error in install.packages : Updating loaded packages WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools ... -
ros使用python3编译cv_bridge、tf等packages
2020-05-13 12:25:25packages') # sys.path.remove('/home/s/ros_study/devel/lib/python2.7/dist-packages') # print(sys.path) # sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages') # print(sys.path) import tf ... -
packages unavailable无法查看源码
2022-01-30 22:47:24packages unavailable无法查看源码 打开sdk manager 将show Package details 勾选 找到对应sdk 将source for android 勾选 然后确定后会下载资源 下载完成后,就可以看见源码了 不会是 throw exception语句了 注意 ... -
The following packages have unmet dependencies
2021-11-10 11:02:28执行安装软件包命令sudo apt-get install packagename时,提示:The following packages have unmet dependencies The following packages have unmet dependencies,看起来是依赖项的问题,网上的处理方法... -
mac上vscode用pip安装pytest,报错Defaulting to user installation because normal site-packages is not ...
2020-09-07 10:56:32Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: pytest in /Users/fanyan/Library/Python/2.7/lib/python/site-packages (4.6.11) ... -
Python之模块增加到site-packages
2022-01-03 14:44:32你的解释器的site-packages位置 这些目录包含你可能已经安装的第三方python模块(也包括你自己写的模块) 标准库位置 这些目录包含构成标准库的所有模块 当解释器无法在当前工作目录中找到你的模块,它会查找site-...