# Printf moved from Base in v1.4?

**URL:** <https://discourse.julialang.org/t/printf-moved-from-base-in-v1-4/36362>\
**Category:** Internals & Design\
**Created:** [March 22, 2020, 8:54pm UTC](https://discourse.julialang.org/t/printf-moved-from-base-in-v1-4/36362 "2020-03-22T20:54:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![swishmas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/swishmas/32/8803_2.png) [@swishmas](https://discourse.julialang.org/u/swishmas)\
**Post date:** [March 22, 2020, 8:54pm UTC](https://discourse.julialang.org/t/printf-moved-from-base-in-v1-4/36362/1 "2020-03-22T20:54:55Z")

</div>

I decided to use basic commands like `@sprintf` without explicitly importing the module required. That is, instead of writing

```julia
using Printf
@sprintf("%.3f",0.4)

```

I wanted to write something like

```julia
Base.Printf.@sprintf("%.3f",0.4)

```

because I only use the function in three places and I wanted to keep the `using` statements for other modules in my code.

This worked in versions 1.1.1 through 1.3.1. When I tried this in v1.4, I got an error that `Printf` was not defined. Maybe this is because `Printf` might have been moved from `Base` and exported differently? I didn’t see anything in the release notes about this. If I’m right about this, then where is `Printf` and how can I access it without a `using` statement or is that impossible? Where would something like this be documented and I could read about it? Thanks!

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [March 23, 2020, 12:08am UTC](https://discourse.julialang.org/t/printf-moved-from-base-in-v1-4/36362/2 "2020-03-23T00:08:14Z")

</div>

[`Printf`](https://docs.julialang.org/en/v1/stdlib/Printf/) is a standard library, not a submodule of `Base`. I’m surprised that `Base.Printf` ever worked in v1.x times.

_Edit_: apparently until v1.3 there was actually a submodule of `Base` called `Printf` 😕

---

<div class="post-metadata">

**Author:** ![croberts](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/croberts/32/9465_2.png) [@croberts](https://discourse.julialang.org/u/croberts)\
**Post date:** [April 16, 2020, 4:53pm UTC](https://discourse.julialang.org/t/printf-moved-from-base-in-v1-4/36362/3 "2020-04-16T16:53:33Z")

</div>

Hi,

I’m working in an air-gapped environment during the vid and am having version compatibility issues related to the issue above (the ODBC package I have installed uses an installed version of DecFP that calls Base.Printf, but I am using Julia 1.4). The person with permissions to install cannot come in here to downgrade julia or upgrade ODBC.

I am aware that the correct solution is to install the right versions. I cannot do that.

What is the second best solution here? I would like to run:

> using Printf  
> Base.Printf = Printf

This doesn’t work, but if it did then ODBC would run without modification. can you recommend a similar hack/workaround?

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [April 16, 2020, 5:09pm UTC](https://discourse.julialang.org/t/printf-moved-from-base-in-v1-4/36362/4 "2020-04-16T17:09:34Z")

</div>

Here’s a hack you can do:

```julia
julia> @eval Base using Printf

julia> Base.Printf
Printf

```
